无法解析此引用:CI的NuGet服务器上(Could not resolve this refere

2019-10-22 21:03发布

我是一个TFS构建控制器,连接到VS在线上运行的CI版本。 我有一个NuGet包一个“无法解析此引用”的问题,我观察到我以前从未见过的行为:

本地pacakage下载到packages\FluentValidation.5.5.0而在服务器上,它下载到packages\FluentValidation.5.5.0.0

Packages.config:

<package id="FluentValidation" version="5.5.0" targetFramework="net45" userInstalled="true" />

.csproj的文件$(SolutionDir)共享项目-适用于所有其他项目:

<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>

NuGet包恢复启用,所以如果我在本地从包文件夹中删除包和重建 - 工作正常。

现在,CI服务器上。 建立诊断日志状态:

安装 'FluentValidation 5.5.0.0'。 ...成功安装 'FluentValidation 5.5.0.0'。

但随后进一步生成日志:

16> C:\ Program Files文件(x86)的\的MSBuild \ 12.0 \ BIN \ AMD64 \ Microsoft.Common.CurrentVersion.targets(1697,5):警告MSB3245:无法解析此引用。 无法找到程序集“FluentValidation”。 检查以确保存在磁盘上的装配。 如果您的代码需要此引用,则可能出现编译错误。 [C:\构建\ 24353 ...东西... \ projectfile.csproj对于SearchPath中 “{} HintPathFromItem”。 被认为是 “C:\构建\ 24353个...东西... \包\ 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.0从何而来。 同时该项目似乎忽略了构建路径。 CI服务器上有VS 2013和我在包装盒上更新的NuGet,并没有帮助。 这里只有1的地方,有5.5.0.0(含2个零),这是在参考。 我去掉末尾的.0。 解决方案仍然在当地建立,但不能在CI。

更新添加中的.csproj文件中的第二hintpath似乎解决CI服务器上构建,但是局部打破它。 我真的不能让我周围为什么它是V5.0.0本地和v5.0.0.0 CI服务器上头。

PS我已经报告说,它的缺陷: https://github.com/NuGet/Home/issues/504

Answer 1:

原来这是的NuGet,这是固定在VS2015 RC的错误:

来源: https://github.com/NuGet/Home/issues/504



文章来源: Could not resolve this reference: NuGet on CI server