我有一个包含两个项目的Visual Studio解决方案:
类库MyLib
MyLib
引用MyAssembly.dll
MyAssembly.dll
依赖于mynativedll.dll
,它不是.Net程序集,而是原生dll。网络项目MyWeb
MyWeb
参考MyAssembly.dll
在网络项目中,我应该在哪里放置mynativedll.dll
?
如果我将此dll放在bin目录中,则清理时dll将无效。
如果我把这个dll放在“Lib”文件夹中的MyAssembly.dll
旁边,并且我添加了一个探测路径到这个文件夹,这不起作用。实际上,MyAssembly.dll
被复制到bin目录(因为它是一个引用),即使我将“Copy to local”设置为true。
处理此类案件的正确方法是什么?
答案 0 :(得分:0)
哦......其实就是这样。
我直接引用了Web项目中的MyAssembly.dll
(即使从代码角度来看我也不需要)。
然后我在网络目录中将“复制本地”设置为false。
这解决了这个问题。
MyAssembly.dll
不会复制到bin文件夹,而是复制到本机dll所在的lib文件夹中的红色。
答案 1 :(得分:0)
您没有使用DllImport属性在外部实现本机库的方法的任何原因?:
[DllImport("advapi32.dll")]
private static extern int LogonUserA(String lpszUserName, String lpszDomain, String lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken);
[DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern int DuplicateToken(IntPtr hToken, int impersonationLevel, ref IntPtr hNewToken);
[DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern bool RevertToSelf();
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
private static extern bool CloseHandle(IntPtr handle);
DllImport属性:
http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.dllimportattribute.aspx
外部修饰符:
http://msdn.microsoft.com/en-us/library/e59b22c5%28v=vs.80%29.aspx