使用NuGet时将dll复制到输出目录的子文件夹中

And*_*eyS 5 msbuild output-directory nuget-package

假设我有一些NuGet程序包,其中包含c ++ dll和该dll的互操作。安装此软件包时,我看到我的scproj文件已使用以下参考进行更新:

    <Reference Include="Interop.MyCppAssembly, Version=1.1.1.1, Culture=neutral, processorArchitecture=MSIL">
         <HintPath>..\..\packages\MyNuGetPackage.1.1.1.1\lib\Interop.MyCppAssembly.dll</HintPath>
         <Private>False</Private>
         <EmbedInteropTypes>False</EmbedInteropTypes>
    </Reference>
Run Code Online (Sandbox Code Playgroud)

您会看到HintPath指向我的软件包的安装文件夹。您还可以看到我将Copy Local设置为false,因此在构建过程中,Interop.MyCppAssembly.dll不会复制到我的输出目录中(我们称其为bin)。我故意这样做,因为我不想将任何第三方dll放入我的bin文件夹中,以免在输出目录中造成混乱。相反,我想在我的bin中创建一个子文件夹, 如bin \ ThirdPartyLibs,并将所有第三方dll放在此处。

但是我该怎么办呢?我知道我可以将CopyLocal设置为true,然后使用“生成后事件”将Interop.MyCppAssembly.dll从bin移到bin \ ThirdPartyLibs,但我不喜欢这样。还有其他解决方案如何在构建过程中将dll复制到输出目录的子文件夹吗?