Pet*_*ron 8 c# deployment assemblies windows-firewall filenotfoundexception
我的Windows服务需要从Windows防火墙创建/删除某些规则.对于这一点,我界面NetFwTypeLib
中<windows>\system32\hnetcfg.dll
通过COM.它在我的64位Windows 7计算机上运行良好,但在另一台64位Windows 7计算机上进行测试会引发以下错误:
Service cannot be started. System.IO.FileNotFoundException:
Could not load file or assembly 'Interop.NetFwTypeLib,
Version=1.0.0.0, Culture=neutral,
PublicKeyToken=null' or one of its dependencies.
The system cannot find the file specified.
Run Code Online (Sandbox Code Playgroud)
我有一种感觉,如果我使用我的应用程序嵌入并安装程序集,我会遇到不同版本的Windows以及32位和64位之间的问题.
如何解决这个缺少的装配部署问题?
编辑:这似乎是除了4.0之外的任何目标框架的VS2010问题.有人有解决方法吗?
Mar*_*kus 12
NetFwTypeLib对象不驻留在Windows 7旗舰版的hnetcfg.dll库中.相反,它驻留在%system32%\ FirewallAPI.dll(例如c:\ windows\system32\FirewallAPI.dll)的FirewallAPI.dll中.
使用NetFwTypeLib; //添加引用%SystemRoot%\ System32\FirewallAPI.dll
小智 1
多么奇怪的错误啊!我能想到的最好的方法是不要依赖 的System32
版本DLL
,将其复制到您的文件夹中并从那里调用它。据我所知,我认为 DLL 不应该与不同位的计算机发生冲突,但如果它们发生冲突,那么只需从 32 位计算机获取不同的 DLL,并单独下载x64
和x86
. 祝你好运!
编辑:另外,我在 3.5 或更低版本中编程时遇到了一些麻烦VS2010
。尝试获取Visual C# Express 2008.net
的版本并尝试使用它(通常可以通过降级版本修复很多错误)