0

我在使用 TFS 2015 构建时遇到问题。

我有一个引用 B.dll 的简单项目。B.dll 使用 A.dll 。该项目不引用 A.dll,因为它本身不使用它。

A.dll 和 B.dll 都是存储在 GAC 中的公司框架 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\LogistiqueTest\ LogistiqueTest.vbproj”(目标“构建”取决于它):

但是 TFS 不使用相同的文件;它使用

“C:\Program Files (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 没有问题。

4

1 回答 1

0

我终于找到了一个答案:

http://www.nsilverbullet.net/2012/02/17/automatically-resolving-secondary-assembly-references-with-msbuild-and-tfs-build/

我需要将此添加到有问题的 proj 文件中。

<Target Name="AfterResolveReferences">
    <!-- Redefine referencepath to add dependencies-->      
      <ItemGroup>
          <ReferencePath Include="@(ReferenceDependencyPaths)"></ReferencePath>
          </ItemGroup>
</Target>   
于 2017-04-10T13:12:43.133 回答