9

私のWindowsサービスは、Windowsファイアウォールから特定のルールを作成/削除する必要があります。このために、私はCOMを介してNetFwTypeLibinとインターフェースします。私の64ビットWindows7マシン<windows>\system32\hnetcfg.dllではうまく機能しますが、別の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.

アプリケーションにアセンブリを埋め込んでインストールすると、異なるバージョンのWindowsや32ビットから64ビットの間で問題が発生するのではないかと感じています。

この欠落しているアセンブリ展開の問題を解決するにはどうすればよいですか?


編集:これは、4.0を除くすべてのターゲットフレームワークのVS2010の問題のようです。誰かがこれを修正していますか?

4

3 に答える 3

1

なんて奇妙なエラーでしょう。System32私が考えることができる最善の方法は、のバージョンに依存せずDLL、それをフォルダーにコピーして、そこから呼び出すことです。私の知る限り、DLLが別のビットコンピューターと競合することはないと思いますが、競合する場合は、32ビットコンピューターから別のDLLを取得し、との個別のダウンロードをx64行いx86ます。幸運を!

編集:また、3.5以下のプログラミングで問題が発生しましたVS2010Visual C#Express 2008のバージョンを入手して、それを試してみてください(通常、バージョンのダウングレードで多くのエラーが修正さ.netれます)

于 2011-07-27T02:41:37.530 に答える
1

Visual Studio 2012 で作業しているときに、この同じ dll に問題がありました。私にとっての修正は、interop.NetFwTypeLib.dll作業元のディレクトリに手動で移動することでした。これで問題が解決したようです。それが役に立てば幸い

于 2012-12-06T21:44:30.570 に答える