問題タブ [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.
visual-studio - SGEN アセンブリのカスタム ビルドとインストーラーへの組み込み
私はいくつかのSGENのものにかなり混乱しています。プロジェクトの 1 つでシリアル化アセンブリの生成を有効にしました。もともと、リモート アセンブリで caspol を実行することで解決したと思われる次のエラーが発生しました。
1 つ以上のリクエスト タイプを読み込めません。詳細については、LoaderExceptions プロパティを取得してください
ただし、アセンブリが生成されません。デバッグ/詳細出力を追加すると、「SS.dll には、XmlSerializer を使用してシリアル化できる型が含まれていません」というメッセージが表示されます。これは、VS によって適用されたプロキシ スイッチが原因であると読みました。奇妙なことに、他のプロジェクトでは問題がないようです。
したがって、プロキシスイッチを無効にすると(例はこちら)、動作するようです。ただし、リンクされたビルド イベントはすべてのプロジェクトを実行するようです。MSBuild について 1 つのプロジェクトに調整するのに十分な知識がありません。何を変更する必要があるか知っている人はいますか?
さらに、この変更が行われた場合、これをインストーラー (VDProj) に自動的に含める方法はありますか? 各開発者がカスタム パスを使用するため、SS.XmlSerializers.dll に静的にリンクできません。
c# - カスタム XmlSerializer の Xml Serialization アセンブリの生成
私のクラスには、デフォルトのシリアライザーで生成されるものとは異なる XML 構造を使用してシリアライズ/デシリアライズするためのメソッドがあります。メソッドは私の型の XmlSerializer を作成しますが、オーバーライドがたくさんあります。これらのメソッドが呼び出されると、内部的に .NET がまだシリアル化アセンブリを生成していると思いますが、コンパイル後にこのアセンブリを生成したいので、実行時に生成されません。このカスタム シリアル化のシリアル化アセンブリを生成するにはどうすればよいですか? そのタイプに sgen.exe を使用すると、デフォルトのシリアライザーのみが生成されるように見えます。
特に、シリアライゼーション アセンブリを生成する必要があるのは、コードが保護モードで実行される Internet Explorer プロセス内から呼び出されるためです。.net ランタイムがシリアル化アセンブリを生成しようとすると、csc.exe が呼び出され、このプロセスの実行を許可するかどうかを確認するメッセージがユーザーに表示されます。ユーザーにプロンプトを表示させたくない! そのため、すべてのシリアライゼーション/デシリアライゼーションを csc.exe なしで行う必要があります。
考えられる 1 つのオプションは、実行時に生成された .cs をキャプチャし、それを別のアセンブリに配置してから、それを製品に含めることです。少し厄介なことは別として、ビルドプロセスの一部としてその.csを自動生成する方法の問題が発生します...
おそらく言及する価値があります。私のカスタム xml シリアライゼーションは、ネストされたクラスもシリアライズするため、自動生成されたシリアライザーも存在する可能性があります。私のカスタム シリアル化は、主に以下の行に沿って実行されます。一部のプロパティに XmlIgnore を追加し、他のプロパティから XmlIgnore を削除します。これらのプロパティの多くは、シリアル化が必要なオブジェクトを返します。一部は IXmlSerializable を実装し、一部は既定のシリアル化を使用します。
更新: ああ、この回答は、XmlOverrides を使用している場合、XmlSerializer がプリコンパイル済みアセンブリを検索することさえできないため、不可能であることを示唆しています。ダーン。次に、シリアル化コードを生成してプロジェクトに含め、XmlSerializer を呼び出す代わりにそれを直接呼び出すのが最善の方法だと思います。これをきちんと行う方法について何か考えはありますか?
.net - タイプを反映するSGENエラー
ビルドの一部として、Xmlシリアル化アセンブリの生成の承認された回答に記載されている変更を実装しました
exeプロジェクトのビルドに関するエラーメッセージ:
エラー14タイプ'myNamespace.myAssembly.myForm.MicroContact'を反映するエラーがありました。C:\ dev \ src \ myClient \ myClient \ SGEN myClient
MicroContactのコードは次のとおりです(ここに固有のものはありません)。
おそらくビルドエラーの内部例外を取得する方法はありますか?
visual-studio - sgenをサポートするVisualStudioからMonoをコンパイルする
VisualStudioでビルドして取得したMonoバイナリがあります。sgenガベージコレクターを有効にするために使用されるオプション--gc=sgenは使用できません。
このオプションを有効にする方法は?定義はありますか?
.net - XmlSerializer.Serializeには長い時間がかかります...なぜですか?
RssXmlHelper.csのRssToolkitから次のコードが与えられます。
私のWCFサービスでserializer.Serialize()が呼び出されると、かなりの時間がかかります。
これは、プロジェクトから呼び出すWCFサービスにあります。私はそれに足を踏み入れます、そして確かに、それが問題点です。
次に、ソリューション内でプロジェクトを参照しますが、問題はありません。
これをWCFサービスで使用するときに、別の方法で実行する必要があることはありますか?
- アップデート -
さて、Windows7および.NETFramework4用のMicrosoftWindows SDKをインストールし、sgne.exe RssToolkit.dllを実行すると、次のエラーが発生します。
RssToolkitプロジェクトのターゲットフレームワークは4.0に設定されており、Windows SDK for .Net 4と一致しています。これは正しくありませんか?
c# - Web以外のプロジェクト用のXMLシリアル化アセンブリ
VB.NETとC#の両方で、VS2010で自動生成されたシリアル化アセンブリのよく知られた問題を解決しようとしています。プロジェクト設定の[GenerateSerializationAssemblies]オプションは、Web以外のプロジェクトには何もしません(http://blog.devstone.com/aaron/archive/2008/02/07/2778.aspxなどを参照)。したがって、シリアライザーを呼び出すと、ファイルI / O例外が生成されますが、これは非常に残念なことであり、解決策はありません。上記で提案された方法はVS2010で機能しないようであり、SGENは/proxytypesを有効にして実行されます。
crystal-reports - 混合モードアセンブリはバージョンXに対して構築されており、追加の構成情報がないとランタイムのバージョンYにロードできません。
コードのリファクタリングを行った後、VS2010VB.NetWebアプリケーションプロジェクトが次のエラーでコンパイルを停止しました。
「混合モードアセンブリは、ランタイムのバージョン'v1.1.4322'に対して構築されており、追加の構成情報がないと4.0ランタイムにロードできません。」
Visual Studioのエラーリストの[ファイル]列に「SGEN」という単語がありますが、ダブルクリックするとファイルが存在しません(「ドキュメントを開くことができません。名前が変更、削除、または移動されました。」)シリアル化と関係があると思いますが、必要な追加の構成情報は何ですか?私はエラーの調査に数時間を費やしました、そして誰もがapp.configファイルの設定タブに以下を追加するように言います:
ただし、これを検索または作成できるすべての構成ファイルに追加しましたが、これまでのところ役に立ちませんでした。
問題の一部はCrystalReportsである可能性があり、そのDLLは実際にドットネットのv1.1.4322に対して構築されています。
どの構成ファイルにlegacyRuntime構成を追加する必要がありますか?それも正しい解決策ですか?
c# - 一時クラスを生成できません-アセンブリの署名中に暗号化エラーが発生しました
sgenツールを使用してアセンブリを作成する署名付きクラスライブラリがあります。ただし、次のコマンドを実行しようとするとエラーが発生します。
$ sgen.exe /a:testsign.dll / force /compiler:/keyfile:..\..\testsign.pfx / verbose / n
エラー:一時クラスを生成できません(結果= 1)。
エラーCS1548:アセンブリの署名中に暗号化エラーが発生しました'[... path ...]\TestSign.XmlSerializers.dll'-'アセンブリの署名エラー---パラメータが正しくありません。'さらにヘルプが必要な場合は、「sgen /?」と入力してください。
私はMSDNで次のようなエラーを確認しました
CS1548は、アセンブリの署名が失敗したときに発生します。これは通常、無効なキーファイル名、無効なキーファイルパス、または破損したキーファイルが原因です。
ただし、キーを作成したばかりで、パスは正しく、私の知る限り、VisualStudio2010は破損したキーを作成しません。
この問題の再現はかなり簡単です。
- ここに貼り付けたコードを使用して、新しいクラスライブラリを作成します。
class TestSigning
1つと1つの2つのクラスを作成しますclass Model
- [プロジェクトのプロパティ]>[署名]に移動し、[このアセンブリに署名する]を確認します
- 新しい厳密な名前のキーファイルを作成します
- Visual Studioコマンドプロンプトを開く(2010)
- dllを見つけて実行します
sgen /a:<dllname> [... as above ...]
私の推測では、キーファイルの公開キーを使用していると思います。しかしsgen
、キーファイルを保護するために使用したパスワードをどのように通知するかについての情報源は見つかりません。
どうすればいいのかわかりません。私がここでSOで見た他のスレッドには、同じエラー「ヘッダー」unable to generate temporary class
がありますが、エラーの詳細が異なり、Cryptographic failure
(私が見つけた)スレッドはありません。
visual-studio-2010 - 正しくない形式のアセンブリをロードしようとしました
私は、異なるプロジェクトで同時にVS2008とVS2010を使用しています。最近、エンティティ プロジェクトのシリアル化アセンブリを生成しようとしましたが、Visual Studio 2010 で同じものを生成できませんでした。これにより、次のエラーがスローされます。
これは、Entities プロジェクト用にセットアップしたビルド後のイベントです。
VS 2010 コマンド ラインからシリアライザー dll を生成できます。 VS2008 プロジェクトの場合。ラインは正常に機能しています。ただし、エラーはVS2010プロジェクトにあります!
FrameworkSDKDir
VS2010 用の別の変数はありますか? そうでない場合、VS2010 と VS2008 の両方のプロジェクトで動作するように変更するにはどうすればよいですか?
ところで、開発にはwin 2008 Server 32ビットOS、IIS 7を使用しています。
c# - sgen によって作成された XmlSerializers.dll を使用しない XmlSerializer
私の Visual Studio 2010 プロジェクトでは、次のビルド後のイベント コマンド ラインを使用して、sgen を使用して XmlSerializers.dll を作成します。
ビルド後イベント:
私のプロジェクトには厳密な名前が付けられているため、同じキーを使用して "XmlSerializers.dll" に厳密な名前を付けます。VS は、出力フォルダーに XmlSerializers.dll を作成します。
ただし、ProcessMonitor を使用していることに気付きました。.NET は実行時に CSC.exe を呼び出します。ユーザーが同様の問題を抱えており、XmlSerializer(Type) コンストラクターを使用して解決したこの投稿に出くわしました。
コードで同じ手法を使用しましたが、それでも csc.exe を呼び出します。
パフォーマンスのために、プリコンパイル済みの XML シリアル化を使用する必要がある理由と、Windows のシャットダウン時に csc.exe エラーが発生することもあります。Windows がシャットダウン シーケンス中に新しいプロセスを開始することを許可しないため、シャットダウン中に Form を閉じたときにアプリケーションがデータを保存します。XMLシリアライゼーションをプリコンパイルすることで、これを回避するための推奨事項を見てきました。
XmlSerializer が sgen によって作成された XmlSerializers.dll を使用しない理由について何か提案はありますか?
ありがとう。