msbuild.exe不尊重LinkLibraryDependencies

时间:2015-02-06 18:29:01

标签: msbuild devenv

我正在从2008年升级到2013年的Visual Studio解决方案。由于许可问题,我将在构建服务器上使用msbuild.exe而不是devenv.com。

但是我遇到了一个链接错误,它似乎是特定于msbuild.exe的。即使用devenv.com构建时没有问题。

调试问题我发现了链接命令之间的区别。提供错误的项目(testA)取决于项目(projectA)。此依赖项是在Visual Studio 2013 项目依赖项/项目引用中设置的。

但是我们不希望testA使用这种方法来链接projectA(我们有另一种机制来进行链接)。因此,项目参考属性链接库依赖项属性设置为False。在.vcxproj中,看起来像

<ProjectReference Include="..\..\projectA.vcxproj">
  <Project>{472cd426-5c95-4f53-97f8-bf7c4425d1d4}</Project>
  <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
  <Private>true</Private>
  <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
  <LinkLibraryDependencies>false</LinkLibraryDependencies>
  <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
</ProjectReference>

对于Visual Studio 2013(aka devenv.com),这很好。 projectA没有链接。

但是msbuild.exe不尊重这个属性。在命令行上,我看到它与projectA.lib链接。这给出了以下错误

error LNK2005: "public: bool __thiscall projectA::mymethod(void)const "
(?ismethod@projectA@@QBE_NXZ) already defined in myobject.obj

这是一个已知问题。有解决方法吗?

0 个答案:

没有答案