4

それは簡単ですか、それとも可能ですか?

理由:他の質問に続いて、このアプローチを使用して、ソース ファイルをリソースに単純に埋め込み、アプリケーションの実行中に一時フォルダーにコピーして、アプリケーションを単一のファイルとして保持できるようにします。

これを行うには、ビルド前のイベントを使用するのが最善の方法だと思います。もしそうなら、それはどのように行われますか?

編集:ビルド前に追加することについて質問しています。手動で一度追加してからコードを変更すると、自動的に更新されないと想定しているためです。

4

2 に答える 2

1

私は最近、アプリケーションに独自のサンプル ソース コードを表示する必要がある .NET コントロールのサンプル スイートを開発しているときに、これと同じ問題を経験しました。

私が最終的にたどり着いたアプローチは次のとおりです。

  1. /Examples/* の下にあるすべてのコード ファイルをソリューション Resources/ExamplesSrc/* 内の別のフォルダーにコピーするバッチ スクリプト (ビルド前に実行) を作成しました。

  2. 次に、csproj の Resources/ExamplesSrc/* の下にこれらすべてのファイルを含めて保存しました。

  3. 次のステップは、Resources/ExamplesSrc/* の下にあるすべてのファイルを埋め込みリソースとして設定し、変更を SVN にコミットしました。サンプル (生成されたもの) は SVN にコミットしませんでした。変更された csproj とバッチ ファイルだけです。

開発者がチェックアウトしたときの効果は、すべてのリソースに (!) アイコンがあったことでした (それらはディスク上にありませんでしたが、csproj はそれらを探していました)。このアプローチはビルド サーバー (Team city) でも機能し、サンプル スイートは埋め込みリソースを介して独自のコードを読み込んで参照できるようになりました。

知っておくべき1つの警告。VS2010には(明らかに設計による)癖があります。埋め込みリソースに ".cs" が含まれている場合 (つまり、任意のコード ファイル)、Assembly.GetManifestResourceStream() を使用してアセンブリから読み込むことはできません。これを回避するために、すべてのソース ファイルの名前がバッチ コピー ステップで *.Xaml.cs から *.Xaml.c.txt に、*.cs から *.c.txt に変更されました。

お役に立てれば!

于 2012-04-25T15:56:16.903 に答える
1

ソリューションをビルドするたびにソース ファイルを (再) 追加する必要がないことがわかりました。

リソースの「テキスト」ファイルになると手動で追加すると、 (「SourceCode.cs」という名前のファイルを使用して)文字列として簡単にアクセスできます。Properties.Resources.SourceCodeはい、リソース プロパティ「Persistence」により、自動的に更新されます。ファイルはコンパイル時にリンクされます。

于 2012-04-26T02:05:12.267 に答える