前提
我有一个包含不同 VC++ 项目的 Visual Studio 2015 解决方案。
其中一些(EXE 和一些 DLL)将 $OutDir 设置为默认值“$(SolutionDir)$(Configuration)\”(即“C:\MySolution\Debug\”)。
对于其他一些项目(DLL),我需要将输出路径更改为“默认”$OutDir 的子目录(即“C:\MySolution\Debug\Pieces\”。
示例目录树:
C:\我的解决方案\调试\ 我的程序 依赖.dll 。\件\ MyPiece1.dll MyPiece2.dll
约束
“片段”DLL 依赖于我无法修改的第三方 Dependency.dll(通过 NuGet 包)。
通常的解决方案
通常的方法是更改“pieces”项目的 $OutDir 项目设置,但这也会强制它们的依赖项在同一个子目录中输出。
这是不希望的,并且在整个解决方案的调试和打包中也产生了问题。
到目前为止
,我尝试了: 1. 使所有项目的 $OutDir 保持相同
2. 将“pieces” $TargetName 更改为“Pieces\$(ProjectName)”
这似乎有效(MyPiece*.dll 和 Dependency. 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 之前的解决方案无关(如微软官方注释中关于解决方案升级后警告 MSB8012并在 StackOverflow 上询问)。