私は Remotesoft Linker と Mini Deployment ツールを使って、マネージ コードから単一のネイティブ実行可能ファイル (フレームワークのインストールを必要としない) を作成する実験を行ってきました。構成可能な機能の 1 つは、csc.exe が最終的な実行可能ファイルに使用できるかどうかです。そのドキュメントには、通常、XML シリアライゼーションを使用する場合にのみ必要であると書かれています (私はそうです)。SGen を使用してシリアル化アセンブリを作成するようにビルド プロセスを変更し、xml クラスを使用するソリューション内の各プロジェクトの参照に結果を追加しました。シリアル化クラスは、リンクされた .net 実行可能ファイル (すべての .net dll が 1 つのマネージド exe に結合されたもの) になります。したがって、適切に構成されていると思います。
ただし、私のアプリは実行時に csc を実行しようとします。シリアライゼーション アセンブリに何か問題があり、実行時に再作成されているのでしょうか。または、私のアプリはcscを必要とする何か他のことをしていますか?どうすれば何を判断できますか?
http://www.remotesoft.com/linker/
ビルドの一部として Xml Serialization アセンブリを生成する
編集:変更された app.config を使用していくつかのテストを行い、シリアル化ファイルが生成された場合に表示されるようにしました(ビルド時の生成を元に戻すことによってテストされました)。以前は適切に作成していたようです。実行時に csc を呼び出し、別のフラグを使用してその結果を再表示するフレームワークの別の部分がない限り、おそらく RemoteSoft ツールが原因であると思います。ただし、出力された実行可能ファイルは、注入された app.config ファイルが指示したとしても、作成した一時ファイルを表示したままにしないため、確信が持てません。
私が使用したapp.infoはこれでした。他の場所で値 4 を使用した例を見ましたが、それらの動作の違いを見つけることができませんでした。
<?xml version="1.0" encoding="utf-8" ?> <構成> <system.diagnostics> <スイッチ> <add name="XmlSerialization.Compilation" value="1" /> </スイッチ> </system.diagnostics> </設定>