【问题标题】:Change reference path from GAC to folder at compile time在编译时将引用路径从 GAC 更改为文件夹
【发布时间】:2011-09-20 10:30:57
【问题描述】:
我有一个依赖于一些 3rd 方库的项目。这些程序集在 GAC 中注册。到目前为止,一切工作正常。
但是在构建服务器上构建项目时,第 3 方程序集不在 GAC 中,而是在一个额外的文件夹(称为 external)中,该文件夹也在构建服务器使用的 SVN 存储库中。
由于 MSBuild 找不到这些程序集,构建将失败。有没有办法告诉构建服务器上的 MSBuild 使用此文件夹中的程序集而不是 GAC?
【问题讨论】:
标签:
visual-studio-2010
reference
msbuild
compile-time
build-server
【解决方案1】:
最佳实践是不在构建时引用来自 GAC 的第 3 方程序集。而是从一个公共源代码控制文件夹中引用所有 3rd 方程序集。
如果您使用编辑器打开项目,理想情况下您将为每个第 3 方参考提供一个 HintPath。即:
<Reference Include="Microsoft.Practices.Unity">
<HintPath>..\..\..\3rd Party\Prism4\Microsoft.Practices.Unity.dll</HintPath>
</Reference>
【解决方案2】:
这应该可行
MSBuild.exe "%BUILD_TARGET%" /t:rebuild /p:OutputPath="%OUTPUT_PATH%" /p:ReferencePath="%REF_PATH%"
相关位将是 c 的“ReferencePath”参数 :)