.net 无法解析此引用:CI服务器上的NuGet
我正在连接到VS Online的TFS生成控制器上运行CI生成。我有一个NuGet软件包的“无法解决此引用”问题,我观察到了以前从未见过的行为: 在本地,数据包下载到.net 无法解析此引用:CI服务器上的NuGet,.net,tfs,nuget,tfsbuild,nuget-package-restore,.net,Tfs,Nuget,Tfsbuild,Nuget Package Restore,我正在连接到VS Online的TFS生成控制器上运行CI生成。我有一个NuGet软件包的“无法解决此引用”问题,我观察到了以前从未见过的行为: 在本地,数据包下载到packages\FluentValidation.5.5.0,而在服务器上,数据包下载到packages\FluentValidation.5.5.0 Packages.config: <package id="FluentValidation" version="5.5.0" targetFramework="net45"
packages\FluentValidation.5.5.0
,而在服务器上,数据包下载到packages\FluentValidation.5.5.0
Packages.config:
<package id="FluentValidation" version="5.5.0" targetFramework="net45" userInstalled="true" />
Nuget package restore已启用,因此如果我从packages文件夹中本地删除包并重新生成,则可以正常工作
现在在CI服务器上。生成诊断日志状态:
正在安装“FluentValidation 5.5.0.0”。
...
已成功安装“FluentValidation 5.5.0.0”
但在构建日志中进一步:
16> C:\程序文件
(x86)\MSBuild\12.0\bin\amd64\Microsoft.Common.CurrentVersion.targets(1697,5):
警告MSB3245:未能解析此引用。找不到
程序集“FluentValidation”。检查以确保装配正确
存在于磁盘上。如果您的代码需要此引用,您可以
获取编译错误。[C:\Builds\24353…stuff…\projectfile.csproj]
对于搜索路径“{HintPathFromItem}”。
考虑了“C:\Builds\24353…stuff…\packages\FluentValidation.5.5.0\lib\Net40\FluentValidation.dll”
正如所料-该文件夹中没有包
C:\Builds\24353\。。。stuff…\packages\FluentValidation.5.5.0\lib\Net40\
但是-这是因为它被下载到CI服务器上的另一个文件夹中:
C:\Builds\24353\。。。stuff…\packages\FluentValidation.5.5.0.0\lib\Net40\
(注意包文件夹名称后面的额外.0)
我不知道额外的.0是从哪里来的。项目似乎也忽略了构建路径。
CI服务器上有VS 2013,我更新了框上的NuGet,没有帮助。引用中只有一个地方有5.5.0.0(带2个零)。我删除了尾随。0。解决方案仍在本地生成,但不在CI上生成
更新
在.csproj文件中添加第二个hintpath似乎可以修复CI服务器上的构建,但会在本地破坏它。我真的不明白为什么本地版本是v5.0.0,而CI服务器版本是v5.0.0.0
p.S.我将其报告为错误:结果表明这是NuGet中的一个错误,在VS2015 RC中已修复: 资料来源:
<Reference Include="FluentValidation, Version=5.5.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>$(SolutionDir)\packages\FluentValidation.5.5.0\lib\Net40\FluentValidation.dll</HintPath>
<SpecificVersion>False</SpecificVersion>
<Private>True</Private>
</Reference>