TeamCity - MSBuild无法找到NuGet引用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TeamCity - MSBuild无法找到NuGet引用相关的知识,希望对你有一定的参考价值。
试图在TeamCity中构建一个对NuGet包中的程序集有大量引用的C#项目失败但在Visual Studio中工作正常。
在日志中找到;
For SearchPath "{HintPathFromItem}".
[13:48:15][ResolveAssemblyReference]
Considered "..packagesAspNetMvc.4.0.20126.16343lib
et40System.Web.Mvc.dll", but it didn't exist.
项目文件中的引用是;
<Reference Include="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..packagesAspNetMvc.4.0.20126.16343lib
et40System.Web.Mvc.dll</HintPath>
</Reference>
有任何想法吗?它似乎不是从正确的目录开始,因此无法解析存在于.csproj文件上一级的“../packages”。
我知道这已经得到了回答,但也许其他人也遇到了同样的问题。
我的项目文件中的提示路径错误地指向包并将其更改为..packages为我修复它。
所以改变它:
<Reference Include="Newtonsoft.Json">
<HintPath>packagesNewtonsoft.Json.5.0.5lib
et40Newtonsoft.Json.dll</HintPath>
</Reference>
对此:
<Reference Include="Newtonsoft.Json">
<HintPath>..packagesNewtonsoft.Json.5.0.5lib
et40Newtonsoft.Json.dll</HintPath>
</Reference>
固定它。
自从安装NuGet软件包以来,我重新构建了我的项目,所以即使'../packages'对于主项目来说是正确的,也不适用于已被移动的其他项目。
卸载并重新安装NuGet包正确地或更直接地写入路径,在每个.csproj文件中的路径上执行查找和替换。
我在这一点上的理解是基于这里的信息:http://youtrack.jetbrains.com/issue/TW-20525
但我同时潜入TeamCity和NuGet(来自CruiseControl.NET)
所以我暂时做的是在我的vs.net解决方案构建步骤之前添加一个“NuGet Installer”构建步骤,一切都很好。
您需要将packages目录添加到源代码控制或启用nuget以自动下载软件包(它是nuget 1.6右键菜单中的一项功能)
见http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages
很抱歉复活这篇旧帖子,但除了上述优点(Tjaart,SeeNoWeevil,Luke)之外,您可能还想查看物业CopyLocal=true
以获取您所记录的参考资料。
对我自己来说,这通常是一个微小的疏忽,导致OP提到的错误。
确保.dll和.pdb文件包含在源代码管理中(或已下载)。
对于TFS(不是TeamCity),默认情况下,排除.pdb
文件和.dll
文件。因此,请仔细检查是否已包含每个包子目录的所有文件,而不仅仅是nuget .xml
文件。
背景:我和其他一些海报一样思考这个问题 - .csproj
文件中的相对引用可能不正确。在.csproj文件中使用路径以确保引用对于项目是绝对的... <HintPath>$(MSBuildProjectDirectory)...nugetpackagesCommon.Logging.Core.3.0.0lib
et40Common.Logging.Core.dll</HintPath>
..只是为了得到相同的错误,我仔细检查了所需的文件是否存在。我还在我的本地机器上进行了MSBuild构建(而不是Visual Studio构建),并且它工作正常。对构建服务器的进一步调查显示,指定的文件不存在,即使目录和.nuget包.xml
文件也存在。
您可以在解决方案资源管理器中突出显示该文件,然后转到“属性”,并验证Copy to Output Directory
是否设置为True
以上是关于TeamCity - MSBuild无法找到NuGet引用的主要内容,如果未能解决你的问题,请参考以下文章
为啥我无法使用项目解决方案文件在 Msbuild Teamcity 中构建测试项目?
MSBUILD : 错误 MSB1008: teamcity 中只能指定一个项目
TeamCity/.sqlproj 通过 MSBuild 构建——失败