2012-02-09 4 views
0

CodeDomを使用してC#コードをコンパイルします。リソースが指定されていない場合でも、 "VERSIONINFO"というWin32リソースをコンパイルします。私はそれがコンパイルされた後にBeginUpdateResourceで削除することができますが、それは "PADDINGXXPADDINGXX"をファイルに残してしまいます。 のリソースがなくても、C#コードを.exeにコンパイルする方法はありますか?CodeDomでコンパイルしますが、 "VERSIONINFO" Win32リソースは含めません。

+2

なぜそのリソースはあなたをあまりにも煩わしいのですか?なぜあなたはそれをそこに残すことができないのですか? – svick

答えて

1

これについては、実際にかなり厄介です。 EXEにはVERSIONINFOリソースが含まれているだけでなく、マニフェストも含まれています。それを見る最善の方法は、Visual StudioでFile + Open + Fileを使ってEXEを開くことです。マニフェストはRT_MANIFESTノードの下にあります。

プログラムがUACと互換性があると宣言するので重要です。それがなければ、Windowsはそれを従来のWindowsアプリケーションのように扱います。隔離されたストレージへのファイルとレジストリのアクセスを再マップすることは、かなり予測できない動作です。

あなたが望むものを手に入れることができます。空の.rcテキストファイルをメモ帳(Visual Studioではなく)に作成し、rc.exeで.resファイルにコンパイルします。 CompilerOptionsで/ win32manifestを使用すると、自動的に生成されたネイティブリソースが省略されるようにコンパイラに強制的に使用されます。

+0

あなたの答えと探検に感謝します。リソースの有無にかかわらず実行可能ファイルの動作をテストし、使用するかどうかを決定します。 – bytecode77

関連する問題