EXEプロジェクト(Azureアプリケーションの起動タスク)を使用してサービススタックを使用します。次のサービススタックのDLLおよび一部のAzureのDLLをEXEプロジェクトにコピーしました。
このEXEプロジェクトをビルドすると、Azure DLLはEXEにバンドルされますが、サービススタックのDLLはEXEにバンドルされません。マシンでEXEを実行するには、すべてのサービススタックのDLL手動。
このサービススタックのdllを使用して使用しました
JsonServiceClient client = new JsonServiceClient(servicepath);
これらすべてのDLLをEXEにバンドルするにはどうすればよいですか?
いくつかのオプションがあります:
OR
OR
AssemblyResolve
ハンドラーをセットアップする必要がありますリソースから必要なDLLを.NETランタイムに返します...参照リソースを埋め込みリソースとして含めるのに最適なツールは、 Costura (a Fody アドイン)です。著者サイモン・クロップは次のように説明しています。
[...] 2つの方法の組み合わせ:
- ジェフリーリヒターの提案 組み込みリソースをアセンブリのマージ方法として使用
- Einar Egilssonの提案 cecilを使用してモジュール初期化子を作成する
結果は、NuGetから Costura.Fody を取得するだけで済む、非常にシンプルなソリューションです。
特徴:
ILMerge-GUI、.NET合併 を試してください。これはGUIベースのIlmerge
であり、すべてのコマンドライン作業を回避します。
WPF依存関係がある場合、オプションはより制限される可能性があります。...ILMergeはこれらを処理していないようです。しかし、Costura.Fody(上記のCodefoxで述べたように)は完全に機能しており、約5分かかりました...とても良い経験です。
Nugetを使用してインストールします(パッケージマネージャーコンソールで正しいデフォルトプロジェクトを選択します)。
「ローカルコピー」= trueとマークされたすべてのDLLをマージし、マージされた.EXE(標準出力に加えて、現在ほとんど必要ない)を生成します。これも圧縮されます。これはスタンドアロンで使用できます。
ライセンスはMITなので、必要に応じて変更/配布できます。
ServiceStack.Gap プロジェクトをチェックアウトします。このプロジェクトでは、Howto ILMerge ServiceStackのいくつかの例を単一のクロスプラットフォーム。exeに示しています。
ServiceStackには、組み込みアプリの作成に特に適した他の多くの機能も含まれています。