假设我有一些 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>
您可以看到 HintPath 指向安装我的包的文件夹。您还可以看到我将Copy Local设置为 false,因此在构建期间Interop.MyCppAssembly.dll 不会被复制到我的输出目录(我们称之为bin )。我是故意这样做的,因为我不想将任何第三方 dll 放入我的bin文件夹中,以避免在我的输出目录中出现混乱。相反,我想在我的bin中创建一个子文件夹, 例如bin\ThirdPartyLibs并将所有第三方 dll 放在那里。
但是我该怎么做呢?我知道我可以将 CopyLocal 设置为 true,然后使用 Post Build Event 将 Interop.MyCppAssembly.dll 从bin移动到bin\ThirdPartyLibs但我不喜欢这样。还有其他解决方案如何在构建过程中将 dll 复制到输出目录的子文件夹吗?