【问题标题】:TFS 2015 reference required to assemby组装所需的 TFS 2015 参考
【发布时间】: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


【解决方案1】:

我终于找到了一个答案:

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>   

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-02
    • 2023-03-09
    • 2018-06-19
    • 2016-10-07
    • 1970-01-01
    • 2016-02-15
    • 2013-12-21
    • 1970-01-01
    相关资源
    最近更新 更多