我有一个问题,我想优雅地解决,但现在不知道该怎么做。
在我的 C++ 解决方案(VS2012)中,我有一个项目,其中包含所有必须复制到输出目录中才能完成部署的 .dll 文件。我还编写了一个小的自定义工具来进行复制。
实际的问题是我们必须为不同的配置(Win32/x64/Debug/Release)部署不同的 .dll,我们必须ExcludedFromBuild
手动为每个文件和每个配置设置属性。我希望根据文件所在的过滤器自动设置此属性。为了更好地查看为哪个配置复制了哪个 .dll,我将它们组织在具有以下结构的过滤器中。
- Win32
- 调试
- 释放
- x64
- 调试
- 释放
当我查看vcxproj.filters
文件时,条目如下所示。
<CopyFiles Include="..\bin.x64\icudt54d.dll">
<Filter>x64\Debug</Filter>
</CopyFiles>
所以我想,我应该能够访问我的复制目标内的过滤器使用%(CopyFiles.Filter)
<Target Name="AddInputsAccordingToFilter">
<ItemGroup>
<CopyFiles Include="@(CopyFiles)" Condition="%(CopyFiles.Filter.StartsWith('$(Platform)') And %(CopyFiles.Filter.EndsWith('$(Configuration)')"/>
</ItemGroup>
</Target>
但这从来没有奏效,当试图找出问题时,我发现它%(CopyFiles.Filter)
总是空的,因为文件.vcxproj.filters
中没有导入.vcxproj
。我尝试手动向.vcxproj.filters
文件添加导入,但随后 Visual Studio 中的过滤器完全搞砸了。
有谁知道一种方法可以在不破坏 Visual Studio 项目的情况下自动执行此过程?