添加为项目文件夹中的链接,以始终复制到输出的根目录
本文关键字:复制 根目录 输出 链接 项目 项目文件 文件夹 添加 | 更新日期: 2023-09-27 17:56:42
我正在与标准 c# 项目中的非托管.dll
进行一些互操作。我不能将这些.dll
添加为简单的引用,并且必须使用 P/Invoke 来实际使用它们。它们不包括清单,因此做任何聪明的反射来动态加载这些(从而解决将它们作为显式、单独的文件包含的问题)根本不可能。
我不关心安装程序版本,我可以告诉WiX(或我选择的任何安装程序平台)将哪些文件准确放置在目标系统上的位置。
问题在于调试输出,我需要这些.DLL 与我自己的项目的可执行文件并行,但我不希望它们弄乱我的实际托管代码。
所以我的情况是这样的;
- 我将几个.dll作为链接添加到项目的文件夹中。
- 我尝试更改 .csproj 以在调试输出的根目录下输出链接的文件。
它看起来像这样:
<None Include="..'..'externals'MyLibraries'ADll.dll">
<Link>TidyFolder'ADll.dll</Link>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
现在,通常您会将 <Link>
标记更改为您希望输出的位置,但这样做:
<None Include="..'..'externals'MyLibraries'ADll.dll">
<Link>ADll.dll</Link>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
更改链接.dll
驻留在我的项目资源管理器中的文件夹;它确实正确输出,但混乱是不可取的,这也是我首先想将它们放入文件夹中的原因。
TL;DR:如何同时控制链接项在项目中的可见位置,以及它在调试时的输出位置。
考虑将它们添加为嵌入式资源:
<ItemGroup>
<EmbeddedResource Include="..'..'externals'MyLibraries'ADll.dll">
<Link>TidyFolder'ADll.dll</Link>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</EmbeddedResource>
</ItemGroup>