問題タブ [fody]
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.
msbuild - パッケージを復元するときに、NuGet がファイルの上書きについて尋ねないようにするにはどうすればよいですか?
最近、一部のプロジェクトに Fody を追加しましたが、ローカルでは問題なく動作しますが、TeamCity ビルド サーバーでは問題が発生します。VS2015 のパッケージ マネージャー コンソールで次のコマンドを実行すると、ローカルで複製できます。
ビルド サーバーでは、ログファイルがサーバーのデータ ドライブの空き領域をすべて使い果たすまで、このメッセージが何度も繰り返されます (最後の TC ログは 28GB になりました!)。
を試し-NonInteractive
ましたが、これはビルド サーバーに影響を与えないようで、ローカルでは、パッケージ マネージャー コンソールで、そのパラメーターを認識しないと表示されます。
tfs - TFSはFodyアセンブリを織りません
プロジェクトで Fody.PropertyChanged を使用しようとしているので[ImplementPropertyChanged]
、クラスに追加しました。
私の開発マシンでは、すべてローカルで正常に動作します。
ただし、TFS で生成されたバイナリを逆コンパイルすると、それらが織り込まれていないことがわかります。それらにはまだ Fody 属性があります。
FodyWeavers.xml には veaver があります。
アセンブリが織り込まれていない理由を知るには、どこを見て、何を調べますか?
ありがとう!
c# - 適切なアーキテクチャ: .NET のドメイン モデルに属性を追加する
バックグラウンド
ドメインモデルが「中心」にあり、インフラストラクチャの具体的な実装、特に具体的なリポジトリが周辺にあることを規定するJeffrey Palermo の Onion Architectureモデル ( Hexagonal Architectureに類似) が好きです。
だから私はドメインモデルを持っているとしましょう:
次に、このドメイン モデルを他のチームに公開する必要があります。
- UI チームは、いくつかのデータ検証属性とカスタム JSON シリアライゼーション属性を追加したいと考えています。
- インフラストラクチャ チームは、サード パーティのデータベース実装から XML シリアライゼーション属性といくつかのカスタム属性を追加したいと考えています。
- パブリック API チームは、仮説として WCF 属性を追加したいと考えています。
すべてのチームに自分の属性を自分のドメイン モデルに追加する自由を与えたくありません。 特に、「レイヤー固有の」依存関係をすべて自分のモデル アセンブリに追加してほしくないのです。
また、このケースは、私自身でサードパーティの「ドメイン モデル」を使用しているため、より複雑になっています (この場合、Google のLibPhoneNumberを使用して電話番号を処理しています)。
理想的には、次のような独自のラッパー クラスを作成する必要があります。
質問
クラスの作成と維持UISpeaker
は骨の折れる作業であり、退屈な定型コードです。
ドメインモデルを直接編集させずに、各チームが追加したい属性を追加するより良い方法はありますか? または、これらのラッパー クラスを生成するのに役立つツールがありますか (おそらくFodyやT4 Templatesのような製織ツールを考えていましたが、このユース ケースで役立つかどうかを知るには、どちらにも精通していません)。
リサーチ
Stackoverflow を調べたところ、同様の質問がいくつか見つかりましたが、探している範囲をすべて満たすものはありませんでした。
ドメイン モデルで JsonIgnore 属性を使用しない - ドメイン モデルで.NETネイティブ属性のみを使用すると結論付けられたため、Json.Net に依存する必要はありませんでした。
属性を別のアセンブリのクラスに追加する -既存の型に属性
CustomReflectionContext
を追加するために使用する方法について説明しました。これは非常にクールに見えますが、残念ながらモデルはリフレクションのためにサードパーティ コード (ORM、EF、Json.Net など) に渡されるため、ここでは機能しないと思います。DDD で個別のドメイン モデルと永続性モデルを使用する- 各レイヤーには独自のバージョンのドメイン モデルが必要であることを確認しましたが、コードの記述と保守を容易にするためのツールや戦略があるかどうかについては議論しませんでした。
c# - プロジェクトの名前変更→「この参照を解決できませんでした。アセンブリが見つかりませんでした」
ソリューションをビルドするたびに、次の警告が表示されます。
警告 この参照を解決できませんでした。アセンブリ "WordAPI" が見つかりませんでした。アセンブリがディスク上に存在することを確認してください。コードでこの参照が必要な場合、コンパイル エラーが発生する可能性があります。オファーホスト
ただし、すべて正常に動作しているように見えます。これは単なる警告ですが、私を悩ませています。
それはどのように始まりましたか?
ソリューションのプロジェクトの 1 つの名前を変更しました。右クリック -> 名前の変更オプションを使用しました。また、検索と置換を使用して、プロジェクト内のすべてのファイルの名前空間の名前を変更しました。AssemblyInfo.cs ファイルを変更しました。アプリケーション タブのプロジェクト プロパティで、 と を変更しましAssembly Name
たDefault Namespace
。問題がある場合は、Costura.Fodyも使用しています。
どのように修正しようとしましたか?
/li>HintPath
実行中のアセンブリのプロジェクト ファイルを次のように変更しました。- 実行中のアセンブリから参照を削除し、再度追加しました。
- ソリューション全体のデバッグ/リリース フォルダーを削除し、ソリューションを再構築しました
私は本当に解決策を見つけることができません。空の解決策を開始して、そこにあるすべてをコピーするのは魅力的です...
私の参照のプロパティ:
ファイル エクスプローラーでのプロジェクトの場所:
c# - 例外を処理するための Fody Async MethodDecorator
Fody を使用して、メソッドからスローされたすべての例外を共通の例外形式でラップしようとしています。
そこで、次のような必要なインターフェイス宣言とクラス実装を追加しました。
そして、このようなドメイン実装
これは、同期コードではうまく機能します。ただし、非同期コードの場合、他のすべての IMethodDecorator が実行されても ( OnExit
、 、 などOnTaskContinuation
)、例外ハンドラーはスキップされます。
たとえば、次のテスト クラスを見てください。
ShouldGetErrorAsync
次の IL コードが生成されることがわかります。
そしてShouldGetErrorAsync2
生成します:
を呼び出すとShouldGetErrorAsync
、Fody が呼び出しをインターセプトし、メソッド本体を try キャッチでラップします。ただし、メソッドが非同期の場合、fodyError.OnTaskContinuation(task)
andfodyError.OnExit()
がまだ呼び出されていても、catch ステートメントにヒットすることはありません。
一方、ShouldGetErrorAsync
IL にエラー処理ブロックがなくても、エラーは問題なく処理されます。
私の質問は、エラー ブロックを適切に挿入し、非同期エラーが傍受されるようにするために、Fody がどのように IL を生成する必要があるかということです。
c#-4.0 - 不明なカスタム メタデータ アイテムの種類: Costura.Fody を使用する場合は 6
Costura.Fody を使用して DLL ファイルを exe ファイルに埋め込んでみました。最初に、パッケージ マネージャー コンソールで次のコマンドを実行して Costura.Fody をインストールしますinstall-package Costura.Fody
。次に、プロジェクトをビルドします。しかし、プロジェクトの構築は失敗し、これはプロジェクトの構築のエラーです:
何か不足していますか?
c# - タイプの指示を作成する
このメソッドを指定して、Mono.Cecil を使用する
タイプが の場合、Instruction
をロードできる を作成するにはどうすればよいですか?value
value
Type
次のようにテストできるvalue
タイプの場合に気付きます。Type
Create
しかし、値を正しくロードするために何を渡す必要があるのか わかりません。
編集:
これを使用して:
一歩近づきます。タイプを受け入れるようです。しかし、アセンブリを書き込もうとすると、次のようにエラーが発生します。
c# - デバッグモードでの Costura.Fody リソースの埋め込みを無効にする方法は?
Costura.Fody を使用して、すべての dll をアプリケーション アセンブリに埋め込みます。
デバッグ ビルド モードで Costura.Fody を無効にする方法はありますか? Costura.Fody をリリースまたはカスタム ビルド構成でのみ動作させるにはどうすればよいですか?