【发布时间】:2017-09-01 20:22:49
【问题描述】:
我在使用 TFS 2015 构建时遇到问题。
我有一个引用 B.dll 的简单项目。 B.dll 使用 A.dll 。该项目不引用 A.dll,因为它本身不使用它。
A.dll 和 B.dll 都是存储在 GAC 中的公司 Framework dll。
[错误]LogistiqueTest\Index.aspx.vb(7,14): 错误 BC30009: 程序集 'A.DII.Technique.Interfaces, Version=3.5.0.0, Culture=neutral, PublicKeyToken=e60618ca32d203a8' 需要参考实现的接口“A.DII.Technique.Interfaces.IGestionException”。将一个添加到您的项目中。
这没什么大不了的,只是缺少一个参考。但是我们不想在我们的项目中添加不必要的引用 此外,Visual Studio (2013 Pro) 不会出现此问题
所以我跟踪了这个问题,我看到了: -> Visual Studio 在此行的“调用”之后快速检索引用(A.dll)
来自项目“D:\AgentTFS_02_work\3\s”的文件“C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets”中的目标“CoreBuild: (TargetId:61)” \LogistiqueTest\LogistiqueTest.vbproj”(目标“Build”依赖它):
但是 TFS 不使用同一个文件;它使用
"C:\Program 文件 (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.targets"
这些文件之间的区别在于 Microsoft.Common.CurrentVersion.targets,其中有一些用于解析程序集的代码。
所以我的问题是,有没有办法让 TFS 像这样构建我的解决方案视觉工作室?强制使用其他目标文件?还有其他技巧可以解决这个程序集吗?
我尝试添加,就像我在网络上的许多帖子中看到的那样,一个包含每个所需 .dll 的文件夹,但 TFS 不会尝试解析 A.dll 的路径
更多信息:在执行 Vbc.exe 时发生异常 因为使用 VS 执行时,命令行在 /import 部分中有 A.dll,而使用 TFS 时没有添加它。 MSBuild.exe 没有问题。
【问题讨论】:
-
您是否在 TFS 构建代理服务器上将 A dll 和 B dll 注册到 GAC? B 是否也使用了 GAC 的 A?
-
请使用MSBuild命令构建你在构建代理机器上下来的项目,可以构建吗?
标签: dll visual-studio-2013 tfs tfs-2015 vbc