問題タブ [resgen]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - プロジェクトで resx ファイルをコンパイルするか、resx をコンパイルせずに resgen を使用します。
プロジェクトで 2 つの resx ファイルを使用しています。1 つは en-Us 用、もう 1 つは de-DE (ローカリゼーション) 用です。
resgen を使用して、これらの resx ファイルをリソース ファイルにコンパイルします。
どなたか、次の 2 つの質問について教えてください。
プロジェクトに fr-FR などの resx ファイルをさらに追加する必要がある場合、プロジェクトに fr-Fr の新しい resx ファイルを追加した後にプロジェクトを再度コンパイルする必要がありますか、それとも resx ファイルを作成して . Visula Studio プロジェクトをコンパイルせずに resgen ツールを使用して resx からリソース ファイルを取得するにはどうすればよいですか?
resgen を使用して resx から生成された .resource ファイルを exe に埋め込むことはできますか、それともリソース ファイルを使用する exe と共にスタンドアロンのコンパイル済みバイナリとして残りますか?
resgen - プロジェクトのビルド後のイベントで Resgen コマンドが機能しない
このコマンドは、プロジェクトのビルド後のイベントでは機能しません:
resgen "$(ProjectDir)SpectrumLite_en-US.txt" "$(ProjectDir)"
出力ウィンドウのエラー メッセージは次のとおりです。
「resgen」は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されません。
そのコマンドは、Visual Studio コマンド プロンプトでは正常に実行されましたが、cmd でもポスト ビルド イベントでも実行されませんでした。
tfsbuild - TFS2010 から TFS2012 に移行するときの System.Drawing V4 の FileNotFoundException。例外コード 0xE0434F4D
VS2005 .Net 2 で開発された大規模なソリューションがあります。TFS2010 から TFS2012 に移行しました (フレームワークは .Net v2 のままです)。IDE、ビルド、およびインストールではすべて正常に動作しますが、プログラムを実行すると、次の問題の署名が表示されます。
TFS2010 ビルド サーバーは Windows XP SP3 x86 です。
TFS2012 ビルド サーバーは Windows Server 2008 R2 x64 です。
フレームワークを .Net 4 に移行しましたが、すべて正常に動作しますが、残念ながら一部のクライアントでは .Net 2 が必要です。
WinDbg を使用すると、次のことがわかりました。
/li>
私が見る限り、System.RuntimeTypeHandle.GetTypeByName の引数 1、つまり文字列が 0 であるため、FileNotFound 例外が発生しますが、ファイル名はわかりません。
- FusionLog を使用すると、次のことがわかりました。
System.Drawing v2 を正常にロードしますが、v4 をロードしようとしても失敗します (どのプロジェクトも .Net v4 アセンブリを参照していないことを確認しました)。
以下はプロクモンからの抜粋です。
ご覧のとおり、myProgram.resources.dll を読み込もうとして失敗し、Framework v4 ファイルを読み込もうとしたため、リソース ファイルを調べました。
mscorlib.resources.dll は、.Net の言語パックと Silverlight によってインストールされます。TFS2010ビルドサーバーにこれがあったため、Silverlightをインストールしようとしましたが、機能しませんでした。
[この記事]: .Net 2.0、VS2010、および Windows 8 での「ファイルまたはアセンブリ System.Drawing またはその依存関係の 1 つを読み込めませんでした」エラーは、System.Drawing エラーは VS のリソース ファイルのバグが原因であると述べています。提案された解決策を試しました:
Edit the top line of the Image stream: AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w TO AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w None of the resource files in my solution has the erroneous top line in the image stream "j00LjAuMC4w"
4.0.0.0 バージョンのすべての .resx ファイルもチェックしましたが、それらはすべて 2.0.0.0 でした
- クラッシュ ミニ ダンプは次のとおりです。
ダンプの要約
ミニ クラッシュ ダンプで例外コード 0xE0434F4D が返されました。
- [このアイデア] を試してみました[プログラム名].exe はmyProgram を管理者として実行しているが、助けにはなりませんでした。
[このブログ] http://blog.toxa.de/archives/38 (.Net 2 も扱っています) は、SplashScreen からアイコンを削除するというアイデアを与えてくれました。発生したエラーに影響します。上記のように 1 つのエラーが発生する代わりに、continue オプションを使用すると 3 つのエラーが発生します。
- ビルドログから:
Framework v4 の MSBuild が使用されているのを見ました
各プロジェクト ファイルに Set ToolsVersion = 2.0 および TargetFrameworkVersion = v2.0 を追加し、TFSBuild.proj に ToolsVersion="2.0" を追加しようとしました。
コマンド ラインから Framework v2 MSBuild を実行しました。
- どのスイッチ (/m:1 /nr:False "@F:\Builds\59\Platform\myProgram_BugFixing_CI\BuildType\TfsBuild.rsp") も認識されません。
- これらを削除すると、SolutionRoot が認識されないため、TFSBuild.proj の 7 行目でビルドが失敗します。
- これをハード コーディングすると、C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\TeamBuild\ Microsoft.TeamFoundation.Build.targets 行 359 でビルドが失敗し、SolutionRoot も参照されます。名前空間に無効な子要素 _SolutionRoot があることを示しています。
これは、MSBuild v4 が正しいバージョンであり、TFS2010 ビルド サーバーでも使用する必要があることを示唆しています。
- TFS Build.log は、ビルドで使用されるさまざまな ResGen バージョンを明らかにしました。
TFS2012 ビルド サーバー ResGen を TFS2010 ビルド サーバー exe に置き換え、ビルドを正常に実行しましたが、違いはありませんでした。
[この投稿] MSBuild で resgen.exeが設定を提案できない
の設定 ProductionVersion と同じ値に
それはv8でしたが、これは機能しませんでした。
- myProgram.exe (両方のバージョン) で IlSpy を使用してコードを逆コンパイルすると、逆コンパイルされた .cs ファイルは同じですが、バイナリの .resource ファイルは異なる (サイズと内容の両方) 2 つのツリー構造が表示されます。
特にバイナリ編集では、mainform.resources の末尾に次の行があることがわかります (もちろん、他の差分もあります)。
古い TFS2010 exe では、vs
新しいTFS2012 exeで。これは、新しいビルドが .Net 4 バイナリ シリアル化を使用していることを意味します。古いものは.Net 2バイナリシリアル化を使用しています。
ResGen を簡単に逆コンパイルすると、次のような非常に単純なプログラムであることがわかります。
- 引数を解析する
- .resx ファイルからリソースを読み取ります
- バイナリ リソース ライターを使用して出力ファイルを書き込みます
実際に変更する必要はないはずなので、2 つのバージョンはかなり似ていると思います (どちらも実際には .net2/AnyCPU としてフラグが付けられています)。
さらに興味深いのは、使用されるバイナリ シリアライザーが mscorlib に由来することです。したがって、新しいビルドでは .Net 4 mscorlib を使用する必要があります (ただし、ビルド ログには v2 であると記載されています)。
) ResGen が実際には .Net 2 バイナリであるにもかかわらず、上記の 7 で試した ResGen.exe バージョンを上書きしても効果がなかった理由はこれで説明できます。
asp.net - 「resgen.exe」によって生成された「.resources」ファイルを読み取る方法は?
resgen.exe を使用して、txt ファイルから "resources" ファイルを生成できます。WPF で「resources」ファイルを使用できますが、「cshtml」ファイルに値を入力する方法がわかりません。どんな助けでも大歓迎です。
c# - ResourceManager.GetString が間違ったエンコーディングでローカリゼーションを提供する
ResourceManager
Web フォーム アプリケーションで文字列をローカライズするために使用します。アプリケーションは と をサポートしen-us
ていsv-se
ます。文字列はそれぞれのリソース ファイルから正しく取得されますが、表示されると、Unicode 文字がジャンク値として表示されます。
resources.sv-se.restext
出力
リソースを取得するコード:
コードをデバッグしようとしましたが、返されたテキストは{0} (prim�r)
リソースが正しくデコードされない原因は何ですか?
アップデート:
コンソール アプリで同じアーキテクチャを使用して、正しい文字列を取得できました。アプリケーションの構成に関連して注意すべきことはありますか?
c# - C# コマンドプロンプトで resgen.exe を実行
C# アプリケーションのさまざまな言語での国際化を制御するために使用するコンソール アプリケーションを作成しています。
私が抱えている唯一の問題は、コマンドresgen InputFile OutputFileを使用して cmd 経由で .resource ファイルを作成する必要があることです。このコマンドを実行するために、コマンドを実行する必要がある指定されたファイル (strings-ca-ES.txt、strings.ca-ES.xaml、...) を生成する独自のコマンドがあります。これらのファイルを作成した後、プログラムは、FileName "cmd.exe" と引数 "resgen strings.ca-ES.txt" を使用して System.Diagnostics.Process を開始します。その後、コマンド「resgen strings.ca-ES.txt strings.ca-ES.resources」で別のプロセスが実行されます。最初も2番目も実行されず、同じプロンプトウィンドウに同じコマンドを書き込むと(まだ閉じられていませんでした)、次のメッセージが表示されます。
コマンドresgenが見つからなかったことを意味しますが、環境変数にそのパスがあります。
どんな助けでもよく受け取られます。
ありがとう!