問題タブ [sgen]

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.

0 投票する
1 に答える
5424 参照

c# - SGEN XMLSerializer - 現在のプロジェクトまたは GAC への参照として .XMLSerializers.dll を追加する必要がありますか?

XMLSerializer クラスでいくつかのことを行います。ほとんどの初心者と同様に、アプリの起動時にパフォーマンスの問題に直面しています。多くのブログや記事を読み、最終的に SGEN ツールを使用しています。現在、パフォーマンスは問題ないように見えますが、まだはっきりしていないことはほとんどありません。

1) 次のような SGEN 構文を使用する必要があります。

または、次のようにするだけで十分です (現在、この構文を使用しています。アセンブリにはシリアライズ可能なクラスが 1 つしかありません)。

/type パラメータが実際に役立つのはいつですか?

2) MSDN を読みました ( http://msdn.microsoft.com/en-us/library/ee704594.aspx )

このコマンドは、シリアライザー アセンブリ MyAssembly.XmlSerializers.dll を生成します。これは、現在のプロジェクトまたは GAC への参照として追加する必要があります。

しかし、他のすべてのブログや記事 (SO など) では、MyAssembly.XmlSerializers.dll を MyAssembly が存在するフォルダーに入れるだけで十分だと読みました。

では、何が正しいのでしょうか。

3) .XmlSerilizers.dll を生成し、MyAssembly と一緒にデプロイするだけで十分ですか、それともコードに何かを追加する必要がありますか?

そうは思いませんが、コードを変更する必要がなく、「魔法」が自動的に発生することを確認したいと思います。

0 投票する
4 に答える
7519 参照

.net - ソリューションのコンパイル時に MSBuild が SGen を見つけられない

ここで SGen 関連の他のいくつかの質問を見てきましたが、それらの回答が適用されないか、回答でこれが解決されません。この問題を修正するためにいくつかの SDK をインストールしましたが、うまくいきませんでした。参照型は、これが問題になる唯一の場所であるため、変更しないでください。SGen.exe をC:\Windows\Microsoft.NET\Framework\v3.5フォルダーに配置することをお勧めしますが、これが問題にならないボックスでは実行されていません。このシナリオでは、SGen.exeが実際に存在し、本来あるべき場所にありますが、MSBuild は何らかの理由でそれを見つけるのにまだ問題があります!

バックグラウンド:

ビルドを自動化する NAnt スクリプトがあります。このシナリオでは、NAnt が MSBuild を呼び出しており、MSBuild が SGen を見つけることができないというエラーを生成しています。プロジェクトは .NET 3.5 ベースです。スクリプトが完全に機能するプライマリ開発環境 (64 ビット Vista Ultimate) があり、それを VM (64 ビット Win 7 Ultimate) に複製しようとしています。私は準備ができているはずの点まですべてを持っていると思いますが、これは Win7 ボックスでは失敗します (Vista ボックスでは完全に動作します)。

2 つのボックスをいくつか比較しましたが、この点ではどちらも同じように見えますが、それでも失敗します。たとえば、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFrameworksdkInstallRootv2.0値はC:\Program Files\Microsoft.NET\SDK\v2.0 64bit\両方のマシンで に設定されています。両方のマシンでSGen.exe、そのパスのbinサブディレクトリにあります。

NAnt スクリプト:

私が得るエラーメッセージはこれです:

MSBuild が SGen をまだ見つけられない原因となっている、ここで間違っていることは何ですか?

0 投票する
1 に答える
839 参照

.net - アクセス違反でsgenmsbuildタスクが断続的に失敗する原因となるのはどのような種類ですか?

プロジェクトのMSBuildファイルで、xmlシリアル化中に使用されるクラスを含むアセンブリをsgenします。クラスはxsd.exeを介して生成されます。

次のSGenタスク構成を使用します。

ビルドサーバーでmsbuildスクリプトを実行すると、断続的に次のエラーがスローされます。元々、このエラーは50(CI)ビルドごとに1回発生した可能性がありますが、最近は頻度が増加しており、現在は10ビルドごとに5〜6回発生する可能性があります。

Sgennedされているアセンブリのサイズは約410k(生成されたコードの約35,000行)であり、成功すると、シリアル化アセンブリのサイズは約1.7Mになります。

失敗した場合の出力は次のとおりです。

Hudsonを使用してビルドを管理しているため、msbuildプロセスとsgenプロセスはHudson.exeによって生成されます。

SGenからのこのタイプのエラーに関して、インターウェブにはあまりありません。確かに具体的なことは何もありません。

0 投票する
2 に答える
8450 参照

visual-studio-2010 - VS2008 から VS2010 にアップグレードした後、SGEN が機能しない

最近、VS2008/.NET 3.5 SP1 プロジェクトを VS2010 および .NET 4 にアップグレードしました。SGEN を呼び出して XmlSerializers アセンブリを生成するビルド後のイベントがあります。

実行しようとするたびに、次のエラーが発生します。

コマンド ラインから SGEN を実行しても同じエラーが発生しますが、何が問題なのかわかりません。何か案は?

0 投票する
5 に答える
22610 参照

visual-studio-2010 - 3.5フレームワークをターゲットにするようにMsbuildでSGENツールパスを設定する方法

プロジェクトをVS2008からVS2010にアップグレードしましたが、3.5フレームワークをターゲットにしています。

プロジェクトファイルには、SGENを実行してXmlSerializers.dllを生成するカスタムタスクがあります。ただし、実行されているsgenのバージョンは4.0フレームワークを対象としています。その結果、アプリケーションを実行すると、次のエラーメッセージが表示されます。

「ファイルまたはアセンブリ'XXXX.XXXX.XmlSerializers'またはその依存関係の1つを読み込めませんでした。このアセンブリは、現在読み込まれているランタイムよりも新しいランタイムによってビルドされているため、読み込むことができません。」

Sgenタスクは次のようになります。

ToolPath = "$(SGenToolPath)"があります。3.5を対象とするバージョンを実行するにはどうすればよいですか?

ここにも同様の質問がありますが、あまり役に立ちません。

0 投票する
13 に答える
64592 参照

visual-studio-2010 - VSTS 2010 SGEN:エラー:ファイルまたはアセンブリを読み込めませんでした(HRESULTからの例外:0x80131515)

VS2010で奇妙な問題が発生しています。TFSを使用してAPIdllを構築し、プロジェクトでそれらを参照して、完全に信頼されたマップされたネットワークドライブを使用していました。私たちは少なくとも2年間そのように働いており、すべてが完璧に機能しました。

今日、私はWebアプリをvs2010に変換し、リリースでコンパイルすると、次のようになります。

SGEN:エラー:ファイルまたはアセンブリ'file:/// L:\ Api \ Release API_20100521.1 \ Release\CS.API.Exceptions.dll'またはその依存関係の1つを読み込めませんでした。操作はサポートされていません。(HRESULTからの例外:0x80131515)

奇妙なことに、デバッグプロファイルの下にあるときに機能しています...

追加してみました

app.configに追加しても、まだ運がありません(http://social.msdn.microsoft.com/Forums/en/msbuild/thread/d12f6301-85bf-4b9e-8e34-a06398a60df0およびhttp://msdn.microsoft.com/を参照してください) en-us / library / dd409252(VS.100).aspx

参照されているすべてのdllがbinフォルダーにコピーされるため、本番環境ではコードがネットワーク共有から実行されないため、この問題はVisualStudioまたはmsbuildに起因するものと確信しています。

誰かが解決策(または検索パスのアイデア)を持っている場合は、私に知らせてください!

編集:シリアル化アセンブリの生成がオフになっているため、デバッグモードで動作していたことがわかります。タイトルが示すように、パスが信頼されていないことを示すのはこのユーティリティであるため、これは実際にはSGENの問題です...

0 投票する
1 に答える
2888 参照

c# - Sgen に .net 3.5 シリアライザー アセンブリを強制的に作成させる方法

.NET 3.5 ライブラリに sgen ビルド ステップがあります。VS2010 では、.NET 3.5 アプリからロードできない .NET 4 MyLib.XmlSerializers.dll が生成されます。ビルドステップを変更して正しいバージョンのアセンブリを取得する方法を知っている人はいますか? シリアライザ アセンブリとライブラリを単一の dll に IL マージすることは可能ですか?

これは私のsgenビルドステップです:

ありがとう

編集:ここで同じ質問を見つけましたが、誰かがより良い解決策を持っているかどうかを確認するためにしばらく待ちます。

0 投票する
2 に答える
1632 参照

sql-server - sgenユーティリティで作成されたXMLSerializersをロードする際の「アセンブリの作成」中のSQLServerの「バージョン、カルチャ、または公開鍵の不一致」

Webサービスを呼び出すCLR関数をSQLServerで作成しようとしています。最初のアセンブリを作成すると、AssemblyInfo.csのAssemblyVersionは1.0。*になります。sgenを実行して、付随するXMLSerializersアセンブリを作成しますが、問題はありません。

SQLServerでは、最初のアセンブリは正常に読み込まれますが、XMLSerializersアセンブリを読み込もうとすると次のエラーが発生します。

バージョン0.0.0.0を参照しようとしている理由がわかりません。それは確かにエラーの原因ですか?もしそうなら、なぜXMLSerializersアセンブリが間違ったバージョン番号を参照しているのですか?

0 投票する
3 に答える
2893 参照

visual-studio-2010 - VS.NET 2010/MSBUILD は .NET 3.5 SP1 用の XmlSerializers を生成できますか?

WinForms、汎用ライブラリ、Web アプリを含む VS 2008 ソリューションを VS 2010 にアップグレードしましたが、すべてのプロジェクトは依然として .NET 3.5 SP 1 をターゲットにしています。この手法を使用して、汎用ライブラリの XmlSerializers を生成しています。WinForms アプリは問題なく動作します。同じ XmlSerializers を参照するこれらのライブラリを使用して Web アプリを実行しようとすると、次のメッセージがスローされます。

「/WebSubscribers」アプリケーションでサーバー エラーが発生しました。ファイルまたはアセンブリ 'Ceoimage.Basecamp.XmlSerializers' またはその依存関係の 1 つを読み込めませんでした。このアセンブリは、現在読み込まれているランタイムよりも新しいランタイムによってビルドされているため、読み込むことができません。説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。

例外の詳細: System.BadImageFormatException: ファイルまたはアセンブリ 'Ceoimage.Basecamp.XmlSerializers' またはその依存関係の 1 つを読み込めませんでした。このアセンブリは、現在読み込まれているランタイムよりも新しいランタイムによってビルドされているため、読み込むことができません。

.NET Reflectorを使用して XmlSerializer の参照を調べたところ、の 2.0 と 4.0 の両方のバージョンとmscorlibの 3.5 と 4.0 のバージョンを参照していることがわかりますSystem.Data.Linq。奇妙なことに、それは の 4.0 バージョンしか使用していませんSystem.Xml。それはおそらく私の問題です。

これらの XmlSerializers を使用して Web アプリを実行するにはどうすればよいですか? これらの XmlSerializers を削除するだけで、Web アプリは正常に動作します。これはオプションですが、特定のバージョンの CLR 用のシリアライザーを作成するように MSBUILD に強制するにはどうすればよいですか?

XmlSerializers の作成を強制するプロジェクト ファイルに追加する MSBuild タスクを次に示します。

0 投票する
1 に答える
687 参照

c# - サービス クラスで sgen を使用しても、コンストラクターが非常に遅くなります。

そのため、アプリケーションの起動時間を短縮しようとしていますが、取り組むべき主要なボトルネックを特定しました。各 Web サービス クライアント クラスは、インスタンス化するのに永遠に 1 日かかります。調査の結果、これは完全に、GenerateXMLMappings を実行している SoapHttpClientProtocol が原因であることが明らかになりました。これに関する情報の検索を開始し、この SO 投稿を見つけました。Slow SoapHttpClientProtocol コンストラクター

私の問題はそこで話されていたことを手紙に反映していたので、私はトランペットを鳴らす準備ができていました. 最初の投稿に記載されているすべての手順を実行して、sgen を使用してシリアライザー dll を事前生成し、コードからさまざまなタグを削除して、それを通常の dll に組み込みました。 Web 参照に)。しかし、結局のところ、アプリケーションのプロファイルを作成しても違いはわかりません。SoapHttpClientProtocol コンストラクターの一部として GenerateXMLMappings を実行するために、まだ膨大な時間が費やされています。

実際にカスタム Web サービス クライアント DLL を使用していることを確認しました。また、少なくとも XmlSerializers dll を探していることも確認しました (ファイルを含めない場合、filenotfound が吐き出されていることがわかります)。

SoapHttpClientProtocol コンストラクターが何をする必要があるかを決定する方法についての詳細な情報を誰かが持っていますか? プロセス全体がブラックボックス化されており、実際に内部で何が起こっているかを確認する良い方法がないため、これは本当にイライラする問題です.

事前に助けてくれてありがとう-私はこの壁に完全に反対しています。