将NuGet Boost DLL复制到自动输出目录 我在C++项目中使用了几个升压库。这些库是通过NuGet软件包获得的,例如Boost线程库

将NuGet Boost DLL复制到自动输出目录 我在C++项目中使用了几个升压库。这些库是通过NuGet软件包获得的,例如Boost线程库,c++,visual-studio-2010,boost,dll,nuget,C++,Visual Studio 2010,Boost,Dll,Nuget,在不改变项目属性的情况下编译和链接工程。但由于输出目录中缺少DLL,调试和运行应用程序失败 一种解决方案是使用生成后步骤复制所需的DLL。其他地方对此进行了描述,例如 以下是调试配置中所需复制命令的示例: xcopy /F /Y "$(SolutionDir)\packages\boost_regex-vc100.1.58.0.0\lib\native\address-model-32\lib\boost_regex-vc100-mt-gd-1_58.dll" "$(OutDir)" 该项目是

在不改变项目属性的情况下编译和链接工程。但由于输出目录中缺少DLL,调试和运行应用程序失败

一种解决方案是使用生成后步骤复制所需的DLL。其他地方对此进行了描述,例如

以下是调试配置中所需复制命令的示例:

xcopy /F /Y "$(SolutionDir)\packages\boost_regex-vc100.1.58.0.0\lib\native\address-model-32\lib\boost_regex-vc100-mt-gd-1_58.dll" "$(OutDir)"
该项目是VisualStudio2010项目。但实际使用的IDE是Visual Studio 2013


但是有更好的方法来实现这一点吗?

我使用MSBuild的复制任务就是为了这个目的:

<PropertyGroup Condition="'$(Configuration)'=='Debug'">
  <BoostRT>-gd</BoostRT>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release' Or '$(Configuration)'=='Release_withPDB'">
  <BoostRT></BoostRT>
</PropertyGroup>
<ItemGroup>
<BoostDlls Include="..\packages\boost_log-vc120.1.59.0.0\lib\native\address-model-$(PlatformArchitecture)\lib\boost_log-vc120-mt$(BoostRT)-1_59.dll;
  ..\packages\boost_thread-vc120.1.59.0.0\lib\native\address-model-$(PlatformArchitecture)\lib\boost_thread-vc120-mt$(BoostRT)-1_59.dll;
  ..\packages\boost_system-vc120.1.59.0.0\lib\native\address-model-$(PlatformArchitecture)\lib\boost_system-vc120-mt$(BoostRT)-1_59.dll;
  ..\packages\boost_chrono-vc120.1.59.0.0\lib\native\address-model-$(PlatformArchitecture)\lib\boost_chrono-vc120-mt$(BoostRT)-1_59.dll;
  ..\packages\boost_date_time-vc120.1.59.0.0\lib\native\address-model-$(PlatformArchitecture)\lib\boost_date_time-vc120-mt$(BoostRT)-1_59.dll;
  ..\packages\boost_filesystem-vc120.1.59.0.0\lib\native\address-model-$(PlatformArchitecture)\lib\boost_filesystem-vc120-mt$(BoostRT)-1_59.dll" />
</ItemGroup>
<Target Name="CopyFiles" AfterTargets="Build">
  <Copy SourceFiles="@(BoostDlls)" DestinationFolder="$(OutDir)" />
</Target>

-钆

硬编码boostlib版本(1.59)并不可怕,但除此之外,它工作得很好

后期构建脚本是你的朋友是的,我在我的问题中提到过——我称之为步骤而不是脚本。但这并不是一个很好的解决方案。谢谢分享你的想法。IMHO使用xcopy命令或MSBuild任务进行复制与此没有太大区别。您已经提到了硬编码的主要缺点,版本和名称是必需的。我在寻找一种从nuget自动传播信息的方法。