我有以下情况:
- C# 项目 A 通过 p/invoke 使用非托管 dll:
[DllImport("someUnmanaged.dll")] 项目A配置为在编译时将“someUnmanaged.dll”复制到项目bin文件夹中。这工作正常。
C# 项目 B、C 和 D 都引用 A。但它们不会自动复制非托管 dll。我必须配置每个项目以复制非托管 dll。
因此,如果另一个开发人员想使用我的 projectA.dll,他们必须确切知道要复制哪些未管理的 dll,以及如何配置他们的 VS 项目。
如果项目 A 是托管 c++/cli 项目而不是 ac# 项目,我可以/ASSEMBLYLINKRESOURCE "...\someUnmanaged.dll"告诉编译器在复制 projectA.dll 时始终复制 someUnmanaged.dll。
(这是配置属性 -> 链接器 -> 程序集链接资源中的设置)
/ASSEMBLYLINKRESOURCE以某种方式注释projectA.dll,以便在另一个项目中引用此 dll 时,Visual Studio 也会自动搜索someUnmanaged.dll,并在编译期间复制两者。
如何在 ac# 项目中获得此功能?