プロジェクトで Resharper のコードの問題を実行し、出力を解析して問題をビルドの警告とエラーとして表示するワークフロー アクティビティの最初のバージョンを作成しました。
最初は、Resharper のコマンド ラインを呼び出して、結果の xml を手動で解析するだけでした。Resharper の SDKで dllをいじった後(主に逆アセンブリを介して)、独自のパブリック クラスを使用して結果を解析する方法を見つけました。
私が抱えている最初の問題は、その nuget パッケージが絶対に巨大であることです。そこには 140MB のファイルがあり、パーティション化されていない単一のパッケージとしてはばかげています。いくつかのモデル クラスとパーサー クラスを使用するだけで、これらの dll を 12 個ほどドラッグする必要があり、そのうちのいくつかは、必要な主要な dll とはまったく関係がないように見えます。 . これはショーストッパーではありませんが、私は今何か他のことに苦労しています:
最終的に、41 個のアセンブリに必要な依存関係を突き止めることができました (これも正気ではありませんが、悲しいかな)。最初に、すべてを削除して不足している参照を 1 つずつ追加しようとしましたが、これは信頼性が低く、コンパイルが成功した後でも間接参照がいくつか不足していることが判明しました。次に、小さなコンソール アプリケーションをコーディングして、使用したメインの Resharper アセンブリで参照されているすべてのアセンブリを見つけることにしました。これにより、言及した 41 の参照が得られました。これは、すべての依存関係を見つけるために使用したコードです。
これらはカスタム アクティビティであるため、単体テスト プロジェクトを作成して検証することにしました。これらの 41 のリファレンスのみを使用すると、すべてが正しく機能します。
ただし、ビルド ワークフローにアクティビティを追加し、必要なアセンブリを含むソース管理フォルダーをビルド コントローラーに指定すると、ビルドをスケジュールするたびに、Resharper の SDK から追加の dll が 1 つ必要であることを示すプロセスが失敗します。たとえば、これは最初に尋ねます。
Could not load file or assembly 'AsyncBridge.Net35, PublicKeyToken=b3b1c0202c0d6a87' or one of its dependencies. The system cannot find the file specified. (type FileNotFoundException)
この特定のアセンブリを TFS フォルダーに追加すると、別の dll に対して別の同様のエラーが発生し、これが何度も繰り返されます。
私が知りたかったのは、ワークフロー XAML が正しく実行されるために必要なアセンブリを正確に知るにはどうすればよいかということです。私のカスタム アクティビティ dll にはCodeActivities
、これら 2 つを使用する 2 つの特定のアクティビティと XAML のみのアクティビティがあります。この XAML アクティビティは、変更されたワークフロー テンプレートで直接使用しているものです。
私のプロジェクトの参照に加えて、XAML アクティビティにはTextExpression.ReferencesForImplementation
いくつかのアセンブリ名を持つセクションも含まれていることがわかります。これらの依存関係についても依存関係ファインダー プログラムを実行しました。結果は、既に TFS フォルダーにある同じ 41 個のアセンブリです。
その間、SDK 全体をカスタム アセンブリ フォルダーに入れることにしますが、そこには大量の不要な大きな dll があるため、将来的にはこれを避けたいと考えています。