問題タブ [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.
xamarin - Fody.WeavingTask と SolutionDir に関する Xamarin の問題
Xamarin Android プロジェクトで Realm を使用しようとしていますが、その依存関係の 1 つは Fody です。アプリを実行しようとするたびに、次のエラーが表示されます: エラー MSB4044: The "Fody.WeavingTask" task was not given a value for必須パラメータ「SolutionDir」。
修正を探していますが、見つかりません。値を与える方法を知っていますか? それはどこにある?
レルム ナゲット パッケージについては、既に FodyWeavers.xml を作成しています。
c# - Costura.Fody を使用した組み込みアセンブリによる deps.json の処理
.NET Standard アセンブリを参照する .NET Core コンソール アプリケーションがあります。
Costura.Fody 用の NuGet パッケージと FodyWeavers.xml ファイルも追加しました (以下を参照)。
これは正常にビルドされ、すべてが素晴らしいように見えますが、アプリを実行しようとすると ( dotnet "MyApp.exe"
)、MyApp.deps.json ファイルに記載されている、埋め込んだアセンブリのファイルが見つからないというエラーが表示されます。
エラーメッセージは次のとおりです。
アプリケーション依存関係マニフェスト (MyApp.deps.json) で指定されたアセンブリが見つかりませんでした:
パッケージ: 'My.Assembly'、バージョン: '1.0.0.0'
パス: 'My.Assembly.dll'
これは理にかなっており、このファイルから手動で言及を削除するとアプリの実行は正常に機能しますが、私の質問は次のとおりです。Visual Studio または Costura のいずれかに、このアセンブリの言及を deps.json ファイルから削除するように指示する方法はありますか?ビルドごとにこれを編集する必要はありませんか? ビルド後にこれを編集するツールを作成することもできますが、組み込みの方法をお勧めします。Fody githubページに文書化されたものは何も見ませんでした...
参照用の FodyWeavers.xml:
c# - アセンブリ レベルの Fody MethodDecorator
アセンブリ レベルでMethodDecoratorを使用して fody を使用しようとしています。
サンプル コードで提供されている属性を変更せずに使用しようとしました。
[Interceptor]
すべてを使用してメソッドを装飾すると、期待どおりに機能します。
しかし、アセンブリ内のすべてのメソッドをインターセプトしようとします。サンプル コードは、この属性を にターゲティングしますAttributeTargets.Assembly
。これは、これが機能している可能性があることを示しています。
それを行うために、私は自分のプロジェクトに追加[assembly: InterceptorAttribute]
しました。AssemblyInfo.cs
コードはエラーなしでコンパイルされますが、インターセプターは呼び出されません。
を使用しても同じことが起こります[module: Interceptor]
。
これを機能させるにはどうすればよいですか?
アセンブリ/モジュール内のすべてのメソッドをインターセプトする他の方法はありますか?
アップデート
期待どおりに機能するMethodBoundaryAspectを見つけました。
f# - Task.ContinueWith に相当する F# Async
大規模な .NET ソリューションの一部に属性を実装してい[<Trace>]
ます。これにより、構成可能な分析を、重要と見なされる関数/メソッドに簡単に追加できるようになります。Fody とMethodBoundaryAspectを使用して、各関数の入口と出口をインターセプトし、メトリックを記録しています。これは、同期関数に対してはうまく機能し、メソッドが を返すTask
場合は で実行可能な解決策がありますTask.ContinueWith
が、F# Async を返す関数のOnExit
場合、Async が実際に実行されるときではなく、Async が返されるとすぐに MethodBoundaryAspect の が実行されます。
F# Async を返す関数の正しいメトリクスを取得するために、 を使用するのと同等のソリューションをTask.ContinueWith
考え出そうとしましたが、考えられる最も近い方法は、最初の Async をバインドし、メトリクスを実行する新しい Async を作成することでした-関数をキャプチャし、元の結果を返します。これは、私がインターセプトしている F# Async の戻り値が としてのみ提示されるという事実によってさらに複雑になりますobj
。正確な戻り値の型を知っています。Async
Task
これまでの私の最善の解決策は、おおよそ次のようになります。
残念ながら、この解決策は非常に厄介であるだけでなく、特にループで呼び出された関数や深くネストされた関数をトレースしようとしているときに、非同期計算のリフレクション構造により、自明ではない量のオーバーヘッドが追加されていると思います。非同期呼び出し。非同期計算が実際に評価された直後に、特定の関数を実行するのと同じ結果を達成するためのより良い方法はありますか?
c# - Fody と Ionad を使用して外部アセンブリの静的呼び出しを置き換える
DateTime.Now
ドキュメントに記載されているように、Fody と Ionad を使用して静的呼び出しを置き換えています。
これは、プロジェクト内のアセンブリに対してはうまく機能します。ただし、プロジェクトで直接参照されていない外部アセンブリがあり、同じ置換をオンデマンドで実行する必要があります...
特定のアセンブリに対して Fody Ionide を実行するにはどうすればよいですか (パスを指定しますか?)
c - エラー パッケージ SpalshScreen.Fody
英訳 :
プロジェクトの VisualStudio 環境にパッケージをインストールしSplashScreen.Fody
ました。ユーザー ガイドは、SplashScreen を作成および管理するための .xaml ファイルを生成するプロジェクトに WPF UserControl を追加することでした。その後、別のオプションを選択し、プロジェクトとそのパッケージから .xaml ファイルを削除することにしました。しかし、アプリケーションの起動時にこのエラーが発生し、ファイルとパッケージを削除した後でもエラーが発生する理由がわかりません。
どうすれば解決できますか?
元の投稿 :
SplashScreen.Fodyは、VisualStudio を未開発のプロジェクトごとにインストールし、ユーザー コントロール WPF で生成されたファイル .xaml を作成し、SplashScreen を作成します。単独で dopo ho optato per una altra opzione e ho deciso di eliminare il file .xaml dal progetto e il relativo package. Ora però ricevo questo errore al lancio dell'applicazzione e non riesco a capire perche succede anche dopo aver rimosso il file e il package. さあ、リソルヴェーレ?
c# - ソリューション全体に fody weavers を適用します
Tracer.Fody をセットアップしようとしましたが、1 つのプロジェクトに追加すると完全に機能します。ただし、ソリューション全体のトレーサー ログをセットアップし、FodyWeavers.xml を 1 つだけ使用して構成したいと考えています。メイン プロジェクトでのみ Fody をセットアップし、依存関係を織り込むように指示することは可能ですか?
c# - C# .NET の「モジュール」キーワードとは何ですか?
私は C# を学んでいて、キーワードmodule
. module
C# のこのキーワードが何であり、どのように役立つかを知りたいです。たとえば、次のコードを考えてみましょう。
c# - Fody で装飾されたメソッドで利用できないソース
次のシナリオがあります。
は単純ProjectA
なクラス ライブラリでありProjectB
、コンソール アプリケーションです。
ProjectA.Class1.cs
次のコードが含まれています。
ProjectA.Weaver.cs
内容:
また、コンソール アプリケーションの ( ProjectB.Program.cs
) エントリ ポイントには次のものが含まれます。
そしてProjectA.FodyWeavers.xml
含まれています:
内にブレークポインを配置し、( ) にステップインClass1.A()
しようとすると、次の [ Source Not Available ] ウィンドウがポップアップします。F11
次の方法はありますか?
- デバッガーがウィーバーにステップインしようとするのを防ぐ
- ウィーバーのソース コードの場所をデバッガーに伝える
私はもう試した:
- マイ コードのみを有効にする
Weaver.cs
メソッドへの属性の追加([DebbugerNonUserCode]
、[DebbugerStepThrough]
、[DebbugerHidden]
...)- への Fody 参照の追加
ProjectB
- プロジェクトのビルド デバッグ情報を
Full
使用:
- Visual Studio 2019 コミュニティ エディション
- .NET フレームワーク 4.7.2
- フォーディ 6.2.0
- MethodDecorator.Fody 1.1.0
c# - MethodDecorator.Fody を使用してプロジェクトのすべてのメソッドに織り込むことは可能ですか?
MethodDecorator.Fodyは、アセンブリ全体の任意のメソッドで使用できる属性デコレータを定義する手段を提供することを理解しています。そのアセンブリ内のすべてのメソッドに自動的に適用することは可能ですか? (たとえば、すべてのメソッドをその属性で装飾したかのように。)または、これを可能にする他の Fody 拡張機能はありますか?
Xamrin.FormsプロジェクトでC# / .NETを使用しています。
Fody では不可能な場合、PostSharp または別のフレームワークで自動化する方法はありますか?