roa*_*alz 5 warnings visual-c++-2015
前提
我有一个包含不同VC++项目的Visual Studio 2015解决方案.
其中一些(EXE和一些DLL)将$ OutDir设置为默认值"$(SolutionDir)$(Configuration)\"(即"C:\ MySolution\Debug \").
对于其他一些项目(DLL),我需要将输出路径更改为"默认"$ OutDir的子目录(即"C:\ MySolution\Debug\Pieces \".
示例目录树:
C:\MySolution\Debug\
MyProgram.exe
Dependency.dll
.\Pieces\
MyPiece1.dll
MyPiece2.dll
约束
"Pieces"DLL取决于第三方Dependency.dll(通过NuGet包),我无法修改.
常用解决方案
通常的方法是更改"件"项目的$ OutDir项目设置,但这也会强制它们的依赖项在同一个子目录中输出.
这不是必需的,也会在调试和打包整个解决方案时产生问题.
到目前为止,
我尝试过:1.保持$ OutDir对所有项目都一样
2.将"pieces"$ TargetName更改为"Pieces\$(ProjectName)"
这似乎有效(两者都是MyPiece*.dlland依赖项. dll被正确放置并且调试很好),但不幸的是Visual Studio会生成以下警告:
警告MSB8012:TargetName(Pieces\MyPiece1.dll)与链接器的OutputFile属性值(MyPiece1)不匹配.这可能会导致您的项目错误地构建.要更正此问题,请确保$(OutDir),$(TargetName)和$(TargetExt)属性值与%(Link.OutputFile)中指定的值匹配.
这个警告有些令人困惑,因为项目设置中的%Link.OutputFile看起来是正确的:
$(OutDir)$(TargetName)$(TargetExt)=> C:\ MySolution\Debug\Pieces\MyPiece1.dll
问题
解决问题的正确方法是什么?
如何强制Visual Studio在不同的路径中输出一些生成的文件,但仍然在"默认"$ OutDir中具有Nuget依赖项?
我已经搜索过网络和StackOverflow,但我找不到合适的答案.
注意:我的问题与升级VS2010之前的解决方案无关(如Microsoft官方提示解决方案升级后警告MSB8012并在StackOverflow上询问).