25

テキストファイルをリソースファイルに変換するスクリプトがあります。これにより、さまざまな言語のテキストファイルをさまざまなリソースに変換することで、複数の言語をサポートできます。スクリプトを実行してresxファイルを取得したら、新しいファイルを使用するファイルを作成するために、カスタムビルドツール(ここで説明:コードプロジェクトへのリンク)を実行する必要があります。Designer.cs

ボタンを1回クリックするだけでプロジェクト全体をビルドできるはずだという哲学に沿って、コードビハインドファイルを作成するためにカスタムビルドツールを明示的に呼び出す必要があるステップを削除するにはどうすればよいですか?

Designer.csDesigner.csファイルがなく、ダイスがない場合、カスタムビルドツールが自動的に実行されると思うので、ビルド前の手順としてファイルを自動的に削除しようとしました。

したがって、Visual Studio / msbuildのビルドスクリプトで実行する必要があります:1)テキストをresxに変換(完了)2)resxファイルを適切なディレクトリに移動(完了)3)カスタムビルドツールを使用してdesigner.csファイルを作成(未完了) )。

それが最後のステップです...

4

3 に答える 3

3

残念ながら、これを行う簡単な方法はないと思います。カスタムビルドツールはVS.NET内からのみ実行されます。コマンドラインからMSBuildを使用してプロジェクトをビルドする場合は実行されません。

一般に、ビルドツールをカスタマービルドツールまたはMSBuildタスクとして作成することを選択できる場合は、これらのタスクがVS.NETおよびコマンドラインから実行されるため、毎回MSBuildタスクを選択します。

リソース用のdesigner.csファイルは、コーディングをサポートするためにあります。これらは、リソースファイルへの強く型付けされたアクセスを提供します。したがって、VS.NETでカルチャ不変のリソースを作成する(そして.designer.csファイルを作成する)限り、後で言語サポートを追加する(追加の.resxファイル)と問題なく機能するはずです。

ただし、テキストファイルがプライマリリソースファイルであり、最初にこれらのテキストファイルに新しいリソース文字列を追加する場合は、これらのリソースに対してコーディングできる.csファイルを生成する別の方法を見つける必要があります。必要な場合は、.designer.csファイルを自分で(または同様のものを)生成することはそれほど難しくありません。CodeDomまたはT4を使用すると、既存の.designer.csファイルをテンプレートとして使用してヘルパークラスを作成できます。

于 2009-05-21T20:11:46.327 に答える
2

ビルドプロセスの一部として*.resxの*.Designer.csを生成する方法があります。組み込みのMSBuildタスクGenerateResourceがあります。これは、基本的にSDKツールresgen.exeのラッパーです。ここでは、その使用方法の例を見つけることができます。

生成された*.Designer.csバージョンが正しくない場合、基本的に、GenerateResourceタスクが目的のバージョンのresgen.exeを呼び出さない場合は、プロパティSdkToolsPathを設定すると役立つ場合があります。

于 2017-04-07T08:22:00.467 に答える
0

csprojのBefore/AfterBuildステップにExecステップを追加しようとしましたか?このためにファイルを手動で編集する必要がありますが、それで問題は解決するはずです。

ビルドの前または後にこれを実行するかどうかは完全にはわかりません。Pass1 / Pass2の後で必要な場合は、ターゲットに直接フックできます。これを行う方法の感触を得るために、Microsoft.Build.Common.Targetsを調べてみてください。

于 2009-05-24T05:35:48.877 に答える