【发布时间】:2014-07-16 16:32:06
【问题描述】:
在我的 TFS 构建中,nuget 包在预构建脚本期间下载并解压缩。
来自 nuget 的 dll 在构建期间的引用没有得到解决:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets (1605): Could not resolve this reference. Could not locate the assembly "<asesembly_name>"
我还没有将 nuget /packages 签入 TFS 源代码控制 - 我认为您不应该这样做。
未解决的参考示例:
<Reference Include="Gestion_Excepciones">
<HintPath>..\..\..\..\packages\Gestion_Excepciones.1.0.0.0\lib\net35\Gestion_Excepciones.dll</HintPath>
</Reference>
构建日志(抱歉,西班牙语)
参考主体“Gestion_Excepciones”。 (TaskId:10) 17:22:37.274
2>C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets(1605,5): 警告 MSB3245:没有 se pudo resolver esta referencia。没有安全感 el ensamblado "Gestion_Excepciones"。 Compruebe si el ensamblado existe 艾尔迪斯科。 Si el código necesita esta referencia, podrían producirse 编译错误。 [C:\Builds\1\Egestiona\eLegisla\src\source\website\modules\eLegisla\asp.net_eLegisla.BussinesLayer.Datos\asp.net_eLegisla.BussinesLayer.Datos.csproj] > 对搜索路径“{HintPathFromItem}”。 (TaskId:10)请考虑 "..\..\..\..\packages\Gestion_Excepciones.1.0.0.0\lib\net35\Gestion_Excepciones.dll", pero no existía. (TaskId:10) Para SearchPath “{TargetFrameworkDirectory}”。 (TaskId:10) 请考虑“C:\Program 文件\参考 程序集\Microsoft\Framework\v3.5\Gestion_Excepciones.winmd", pero 不存在。 (TaskId:10) 请考虑“C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\Gestion_Excepciones.dll", pero no 存在。 (TaskId:10) 请考虑“C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\Gestion_Excepciones.exe", pero no 存在。 (TaskId:10) ...
通过必应翻译的英文版
主要参考“管理_异常”。 (TaskId:10) 17:22:37.274
2>C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets(1605,5):警告 MSB3245:
无法解析此引用。未找到程序集“Exceptions_management”。检查程序集是否存在于磁盘上。如果代码需要这个引用,可能会导致编译错误。[C:\Builds\1\Egestiona\eLegisla\src\source\website\modules\eLegisla\asp.net_eLegisla.BussinesLayer.Datos\asp.net_eLegisla.BussinesLayer.Datos.csproj]
> 用于搜索路径“{HintPathFromItem}”。
(TaskId:10) 它被认为是“..\..\..\..\packages\Exceptions_management.1.0.0.0\lib\net35\Exceptions_management.dll”,但没有。
(TaskId:10) 用于搜索路径“{TargetFrameworkDirectory}”。
(TaskId:10) 它被认为是“C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\Exceptions_management.winmd”,但没有。
(TaskId:10) 它被认为是“C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\Exceptions_management.dll”,但没有。
(TaskId:10) 它被认为是“C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\Exceptions_management.exe”,但没有。
(TaskId:10) ...
构建日志显示 msbuild 考虑了 HintPath 并且无法找到它 - 但我可以看到它在那里! HintPath 不是相对于 .csproj 目录吗?
我正在使用
MSBuildBinPath = C:\Windows\Microsoft.NET\Framework64\v4.0.30319
nuget 2.8.1
TFS 2012
【问题讨论】:
-
具有 nuget 引用的库是否在多个解决方案中使用?您添加 nuget 引用的解决方案的提示路径可能不适用于您正在构建的解决方案。
-
所有解决方案上的所有项目都使用相同的包目录,不同之处显然是提示路径用于指向 dll 的 ..\ 块的数量。不确定这是不是问题,因为所有项目都可以在 Visual Studio 上的开发人员框中编译。具体来说,nuget 使用的是所有解决方案通用的 nuget.config($project/main/source/nuget.config),它又指定了一个通用包目录($project/main/source/packages)跨度>
-
尝试将 Verbosity 设置为“Diagnostic”的构建,并查看输出,这是我常用的策略。
-
我的也是这样,只是仔细检查了一下,它处于诊断模式。除了上述之外,没有关于 dll 引用的其他信息。