前提
我有一个包含不同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.将“件”$ TargetName更改为“Pieces \ $(ProjectName)”
这似乎工作(MyPiece * .dlland Dependency.dll都正确放置,调试很好),但不幸的是Visual Studio生成以下警告:
警告MSB8012:TargetName(Pieces \ MyPiece1.dll)与链接器的OutputFile属性值(MyPiece1)不匹配。这可能会导致您的项目构建不正确。要更正此问题,请确保$(OutDir),$(TargetName)和$(TargetExt)属性值与%(Link.OutputFile)中指定的值匹配。
此警告有点令人困惑,因为项目设置中的%Link.OutputFile看起来是正确的:
$(OutDir)$(TargetName)$(TargetExt)=> C:\ MySolution \调试\件\ MyPiece1.dll
问题
解决问题的正确方法是什么?
如何强制Visual Studio在不同的路径中输出一些生成的文件,但仍然在“默认”$ OutDir中具有Nuget依赖项?
我已经搜索过网络和StackOverflow,但我找不到合适的答案 注意:我的问题与升级VS2010之前的解决方案无关(如Microsoft official notes on warning MSB8012 after solution upgrade和asked on StackOverflow)。