[英]Copy third party assemblies to sub folder
我在项目中使用了各种第三方程序集(本机,nuget程序包),这些程序集有时针对不同的平台(x86 / amd64)进行了优化。 Visual Studio会自动将它们复制到应用程序根目录(通常为bin \\ Debug \\ PLATFORM)中,这会创建一个完全未经结构化的混乱。
现在,我正在寻找一种将第三方dll自动复制到自定义子目录中的方法。 我知道有多种方法可以从不同于应用程序根目录(app.config或代码中的privateatePath)的位置加载程序集,但是不知道如何自动将其复制到那里。
所需结构
bin\
release\
x64\
MyApp.exe
MyApp.exe.config
cfg\
custom.config
lib\
ninject\
Ninject.dll
Ninject.Extensions
Ninject.Extensions.Logging
SomeNativeDll\
native_x64.dll
OtherStuff.dll
x86\
...
我已经找到了构建后事件的方法,但是用脚本语言(如脚本语言)声明每个引用都是PITA!
一种可能的解决方案是在您的结构中添加一个额外的项目。 以下步骤重新创建了该步骤:
现在, 内容文件(但实际上是您的dll)被复制到主项目的输出文件夹中的相同文件夹结构中。
为了支持平台特定的dll,它变得有些棘手。
卸载项目并找到您的本机文件:
<Content Include="test\Some_X86.dll" >
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
并为其添加条件
<Content Include="test\Some_X86.dll" Condition="'$(Platform)' == 'x86'" >
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
如果只想在输出中包含x86目标的文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.