如何设置vc ++项目的输出路径与其依赖项(nuget)不同?

时间:2016-11-30 10:13:28

标签: 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.将“件”$ 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 upgradeasked on StackOverflow)。

0 个答案:

没有答案