17

.exeファイルだけで簡単に展開できるWinFormsアプリがあります。フレームワーク2.0を使用しているため、デフォルトではWindows8では機能しません。次のパラメータを含む.configファイルを含めると、W8で正常に機能します。

<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/>
    <supportedRuntime version="v2.0.50727"/>
  </startup>
</configuration>

ただし、2つのファイルをデプロイする必要があり、これは受け入れられません。これらのパラメータをexe自体に「埋め込む」ためにできることはありますか?

WinZip自己解凍形式を使用してみましたが、インターフェイスをカスタマイズできないため、これもオプションではありません。

4

1 に答える 1

13

.NET実行可能ファイルには、適切なCLRバージョンをプロセスにロードすることを目的とした小さなネイティブコードが含まれています。

ローダーはshim(MSCOREE.DLL、.NET実行可能ファイルはこのDLLからのネイティブ依存関係を持っています)を呼び出してCLR( v4のCLRCreateInstance )をロードします。
構成要素の内容は<startup>シムによって処理されます。

<startup>つまり、現時点ではCLR(およびマネージコード)がないため、マネージコードの要素を処理することはできません。唯一の方法は、独自のCLRホストを作成することです。アプリケーションを構成ファイルとともに出荷するか、.NET 4/4.5のバージョンをビルドする方がはるかに簡単だと思います。

于 2012-09-07T11:14:49.153 に答える