6

サード パーティの .exeのラッパーとして機能するプロジェクトがあります (コマンド ラインを作成して実行可能ファイルを実行するための静的メソッドがあります)。ソリューションの少なくともいくつかのプロジェクトで使用したいと考えています。理想的には、.exe はそのラッパー プロジェクトにのみ存在する必要があります (それを使用する各プロジェクトに追加する必要はありません)。現在、IIS 7で実行されているWebプロジェクト(.NET MVC)でこれを機能させようとしていますAssembly.GetExecutingAssembly().Locationが、ラッパーが呼び出されたディレクトリを確認するために使用すると、次のようなフォルダーにいます

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\"my project"\65a016fb\ac5f20a7\assembly\dl3\d8de0f10\06e277a2_55b2cd01

私のサードパーティの.exeはどこにも見つかりません。コンパイルされない参照でファイルをコピーすることはできますか?

ところで、 .exeの「出力ディレクトリにコピー」および「ビルドアクション」プロパティを「常にコピー」および「コンテンツ」/「リソース」/「埋め込みリソース」に設定しましたが、これまでのところ成功していません。

4

2 に答える 2

1

ラッパーを使用するプロジェクトに既存のファイルを追加してみてください。ダイアログ ボックスが表示されたら、次の操作を行います。

http://wiki.oxygenelanguage.com/en-w/images/0/0d/AddAsLinkAero.png

それか、ラップされたAltホールドから必要なファイルをプロジェクトにドラッグします。

これにより、ファイルがリンクとして追加されます。元のファイルを唯一の場所に配置する必要がある場合はいつでも、リンクは再利用に適しています。

ファイルをリンクとして追加し、そのリンク ビルド アクションを出力ディレクトリにコピーするオプションに設定するContentと、うまくいくはずです。Copy always

于 2012-10-25T04:54:20.563 に答える
0

誰かがこの問題に遭遇した場合、これを回避する方法を次に示します。

  • .exe をプロジェクトのリソースに追加します (プロジェクトを右クリックし、[プロパティ] -> [リソース] をクリックして、ファイルを追加し、リソース名を付けます)。
  • byte[].exe に(少なくとも dll をビルドしている場合)としてアクセスできるようになりました。Properties.Resources.*NameYouGaveYourResource*
  • .exe を使用する前にFile.Exists()、ファイルが存在するかどうかを確認しますPath.GetDirectoryName(Assembly.GetExecutingAssembly().Location)(または、上記のメソッドを使用して必要な場所に exe を配置できます)。存在しない場合は、ファイルを書き出します。

using (FileStream fileStream = new FileStream(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\EXE.exe", FileMode.CreateNew)) { fileStream.Write(Properties.Resources. NameYouGaveYourResource , 0, > Properties.Resources . NameYouGaveYourResource .Length); }

これで、exe を .exe として簡単に使用できるようになりましたProcess。理想とはかなりかけ離れていますが、exe がどこに行っても .dll に付随することを意味します。

于 2012-11-01T04:05:51.637 に答える