1

私はVisual Studioエクステンションが初めてで、いくつかのサンプルをGitHubから試してみました。現在開いているソリューションの構造を処理するToolWindowを作成しようとしていますが、これは技術的にはMicrosoft.VisualStudio.LanguageServices名前空間に問題ありません。 - ToolWindow自体がいる限り、私はその名前空間から何かを使用しないよう、働く特に次呼び出された関数は、私の窓のコンストラクタ内の溶液の情報を初期化しますVisual Studioエクステンションのリファレンス問題

private void ReloadSolutionInformation() 
{ 
    var componentModel = (IComponentModel)SmartOptionsEditorPackage.GetGlobalService(typeof(SComponentModel)); 
    VisualStudioWorkspace workspace = componentModel.GetService<VisualStudioWorkspace>(); 
    Solution solution = workspace.CurrentSolution; 

    this.Solutions.Clear(); // some collection of SolutionNode instances 

    // create and add custom tree node with solution information 
    var solutionNode = new SolutionNode(solution.FilePath); 
    this.Solutions.Add(solutionNode); 

    // recurse through projects etc. 
    PopulateSolutionWithProjects(solutionNode, solution); 
} 

私はデバッグの拡張機能を実行すると、 Visual Studio 2017の実験的なインスタンスでは、上記のメソッドが呼び出されるコンストラクタで次の例外(オリジナルはドイツ語、翻訳は100%正確ではない可能性があります)を取得します。

ファイルまたはアセンブリ"Microsoft.VisualStudio.LanguageServices、Version = 2.3.0.0、Culture = neutral、PublicKeyToken = 31bf3856ad364e35"またはその依存関係の1つがfオンド。システムがファイルを見つけることができません。

のStackTrace:MyAssembly.MyToolWindow.ReloadSolutionInformationで() MyAssembly.MyToolWindow..ctorで() MyAssembly.MyToolWindowPane..ctorで()

ファイル名:Microsoft.VisualStudio.LanguageServices、バージョン= 2.3。

CS1762:0.0は、文化=中立、なPublicKeyTokenは= 31bf3856ad364e35

さらに、私がビルドした後、次の警告に気づい参照してください。アセンブリによって作成されたアセンブリへの間接参照のために、Microsoft.VisualStudio.Shell.Interop.10.0、Version = 10.0.0.0、Culture = neutral、PublicKeyToken = b03f5f7f11d50a3a 'という埋め込みinteropアセンブリに作成されました。Microsoft.VisualStudio.LanguageServices、バージョン= 2.3.0.0、文化=ニュートラル、PublicKeyToken = 31bf3856ad364e35 '。いずれかのアセンブリで[Interop Interfaces Types]プロパティを変更することを検討してください。

ビルド出力の冗長性を診断に設定すると、これ以上の情報なしに上記の警告が検出されました。ビルド出力ディレクトリを調べると、参照されているすべてのDLLが含まれていることがわかりますが、Microsoft.VisualStudio.Shell.Interop.15.3.DesignTime.dllを除き、すべてMicrosoft.VisualStudio.*のDLLがVSIXにありません。私がinteropアセンブリを理解する限り、VisualStudioによって提供されていると思いますので、埋め込む必要はありませんか?

参照プロパティEmbed Interop Typesは、参照ごとにfalseに設定されています。見つけたいくつかのアドバイスに応じて変更しようとしましたが、うまくいきませんでした。私は.Net 4.6.2をターゲットにしています。

迷惑な試行錯誤の夕方過ごしすぎたあと、私はまだこれを修正する方法はまだわかりません。これには、NuGetパッケージの再インストール、すべての再起動、実験インスタンスのリセット、ローカルDLLとNuGetPackageとしての参照の削除と再追加が含まれます。以前の編集では、短縮されたプロジェクトファイルの内容を投稿しました。入力文字の制限のため、今すぐ削除しなければなりませんでした。代わりに、ここでfusionlogの出力は次のようになります。

=== Zustandsinformationen vor Bindung === 
LOG: DisplayName = Microsoft.VisualStudio.LanguageServices, Version=2.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 
(Fully-specified) 
LOG: Appbase = file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/ 
LOG: Ursprünglicher PrivatePath = NULL 
Aufruf von Assembly : MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null. 
=== 
LOG: Diese Bindung startet im LoadFrom-Load-Kontext. 
WRN: Das systemeigene Image wird nicht im LoadFrom-Kontext durchsucht. Das systemeigene Image wird nur im Standard-Load-Kontext durchsucht, z. B. Assembly.Load(). 
LOG: Die Anwendungskonfigurationsdatei wird verwendet: C:\Users\me\AppData\Local\Microsoft\VisualStudio\15.0_15d7a44dExp\devenv.exe.config 
LOG: Die Hostkonfigurationsdatei wird verwendet: 
LOG: Die Computerkonfigurationsdatei von C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config wird verwendet. 
LOG: Verweis nach der Richtlinie: Microsoft.VisualStudio.LanguageServices, Version=2.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/Microsoft.VisualStudio.LanguageServices.DLL. 
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/Microsoft.VisualStudio.LanguageServices/Microsoft.VisualStudio.LanguageServices.DLL. 
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/PublicAssemblies/Microsoft.VisualStudio.LanguageServices.DLL. 
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/PublicAssemblies/Microsoft.VisualStudio.LanguageServices/Microsoft.VisualStudio.LanguageServices.DLL. 
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/PrivateAssemblies/Microsoft.VisualStudio.LanguageServices.DLL. 
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/PrivateAssemblies/Microsoft.VisualStudio.LanguageServices/Microsoft.VisualStudio.LanguageServices.DLL. 
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/CommonExtensions/Microsoft/TemplateProviders/Microsoft.VisualStudio.LanguageServices.DLL. 
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/CommonExtensions/Microsoft/TemplateProviders/Microsoft.VisualStudio.LanguageServices/Microsoft.VisualStudio.LanguageServices.DLL. 
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/CommonExtensions/Platform/Debugger/Microsoft.VisualStudio.LanguageServices.DLL. 
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/CommonExtensions/Platform/Debugger/Microsoft.VisualStudio.LanguageServices/Microsoft.VisualStudio.LanguageServices.DLL. 
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/CommonExtensions/Platform/DiagnosticsHub/Microsoft.VisualStudio.LanguageServices.DLL. 
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/CommonExtensions/Platform/DiagnosticsHub/Microsoft.VisualStudio.LanguageServices/Microsoft.VisualStudio.LanguageServices.DLL. 
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/PrivateAssemblies/DataCollectors/Microsoft.VisualStudio.LanguageServices.DLL. 
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/PrivateAssemblies/DataCollectors/Microsoft.VisualStudio.LanguageServices/Microsoft.VisualStudio.LanguageServices.DLL. 
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/PrivateAssemblies/DataCollectors/x86/Microsoft.VisualStudio.LanguageServices.DLL. 
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/PrivateAssemblies/DataCollectors/x86/Microsoft.VisualStudio.LanguageServices/Microsoft.VisualStudio.LanguageServices.DLL. 
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/Microsoft.VisualStudio.LanguageServices.EXE. 
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/Microsoft.VisualStudio.LanguageServices/Microsoft.VisualStudio.LanguageServices.EXE. 
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/PublicAssemblies/Microsoft.VisualStudio.LanguageServices.EXE. 
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/PublicAssemblies/Microsoft.VisualStudio.LanguageServices/Microsoft.VisualStudio.LanguageServices.EXE. 
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/PrivateAssemblies/Microsoft.VisualStudio.LanguageServices.EXE. 
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/PrivateAssemblies/Microsoft.VisualStudio.LanguageServices/Microsoft.VisualStudio.LanguageServices.EXE. 
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/CommonExtensions/Microsoft/TemplateProviders/Microsoft.VisualStudio.LanguageServices.EXE. 
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/CommonExtensions/Microsoft/TemplateProviders/Microsoft.VisualStudio.LanguageServices/Microsoft.VisualStudio.LanguageServices.EXE. 
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/CommonExtensions/Platform/Debugger/Microsoft.VisualStudio.LanguageServices.EXE. 
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/CommonExtensions/Platform/Debugger/Microsoft.VisualStudio.LanguageServices/Microsoft.VisualStudio.LanguageServices.EXE. 
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/CommonExtensions/Platform/DiagnosticsHub/Microsoft.VisualStudio.LanguageServices.EXE. 
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/CommonExtensions/Platform/DiagnosticsHub/Microsoft.VisualStudio.LanguageServices/Microsoft.VisualStudio.LanguageServices.EXE. 
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/PrivateAssemblies/DataCollectors/Microsoft.VisualStudio.LanguageServices.EXE. 
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/PrivateAssemblies/DataCollectors/Microsoft.VisualStudio.LanguageServices/Microsoft.VisualStudio.LanguageServices.EXE. 
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/PrivateAssemblies/DataCollectors/x86/Microsoft.VisualStudio.LanguageServices.EXE. 
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/PrivateAssemblies/DataCollectors/x86/Microsoft.VisualStudio.LanguageServices/Microsoft.VisualStudio.LanguageServices.EXE. 
LOG: Download von neuem URL file:///C:/USERS/ME/APPDATA/LOCAL/MICROSOFT/VISUALSTUDIO/15.0_15D7A44DEXP/EXTENSIONS/AUTHOR/MY ASSEMBLY/1.0/Microsoft.VisualStudio.LanguageServices.DLL. 
LOG: Download von neuem URL file:///C:/USERS/ME/APPDATA/LOCAL/MICROSOFT/VISUALSTUDIO/15.0_15D7A44DEXP/EXTENSIONS/AUTHOR/MY ASSEMBLY/1.0/Microsoft.VisualStudio.LanguageServices/Microsoft.VisualStudio.LanguageServices.DLL. 
LOG: Download von neuem URL file:///C:/USERS/ME/APPDATA/LOCAL/MICROSOFT/VISUALSTUDIO/15.0_15D7A44DEXP/EXTENSIONS/AUTHOR/MY ASSEMBLY/1.0/Microsoft.VisualStudio.LanguageServices.EXE. 
LOG: Download von neuem URL file:///C:/USERS/ME/APPDATA/LOCAL/MICROSOFT/VISUALSTUDIO/15.0_15D7A44DEXP/EXTENSIONS/AUTHOR/MY ASSEMBLY/1.0/Microsoft.VisualStudio.LanguageServices/Microsoft.VisualStudio.LanguageServices.EXE. 

あなたはthis ZIP fileで、最小限のソリューションの例を見つけます。ここでは、新しいVSIXプロジェクトを使用して新しいソリューションを作成し、ウィザードを使用してToolWindowを追加し、重要なコードを追加し、不足している参照を解決し、デバッグを開始し、同じ古​​いFileNotFoundExceptionを受け取りました。

誰でも問題が表示されますか?前もって感謝します。

+0

正常に動作します、VS-拡張いくつかのdllファイルを見つけることができなかったようだ、と私は、問題の原因を確認していません。 OneDrive経由でシンプルなデモを共有してください。 –

+0

また、fusionlog(https://docs.microsoft.com/en-us/dotnet/framework/tools/fuslogvw-exe-assembly-binding-log-viewer)を使用して、これらのアセンブリを見つけるための拡張子の場所を確認することもできます。 – utkarsh

+0

@ ColeWu-MSFT:できるだけ早くデモを行います。 –

答えて

1

Visual Studioが使用するライブラリまたはそれ以下のバージョンのライブラリを使用する必要があります。彼らは

Cで見つけることができるコミュニティ2017について

:\プログラムファイル(x86の)\のMicrosoft Visual Studioの\ 2017 \コミュニティ\ Common7 \ IDE \ CommonExtensionsマイクロソフト\ \ ManagedLanguages \ VBCSharp \ LanguageServices

Visual Studioで今

2017バージョン15.2
Microsoft.CodeAnalysis.Workspaces.dll、Microsoft.VisualStudio.LanguageServices.dll、Microsoft.CodeAnalysis.EditorFeatures.Textは、バージョン2.2.0を持っています。

ですから、ファイルを.csprojする<ForceIncludeInVSIX>true</ForceIncludeInVSIX>を追加することにより、VSIXに含めることができるNuGetでバージョン2.2.0とMicrosoft.VisualStudio.LanguageServicesの

新しいバージョンをVSIXするためにそれらを含める必要はありませんし、それらをインストールまたはアップデート:

<Reference Include="Microsoft.VisualStudio.LanguageServices, Version=2.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <HintPath>..\packages\Microsoft.VisualStudio.LanguageServices.2.3.1\lib\net46\Microsoft.VisualStudio.LanguageServices.dll</HintPath> <ForceIncludeInVSIX>true</ForceIncludeInVSIX> </Reference>しかし、その後、私たちは他のエラーを取得します。

System.InvalidCastExceptionの '型のオブジェクトをキャストすることができません 'Microsoft.VisualStudio.LanguageServices.RoslynVisualStudioWorkspace' と入力する' Microsoft.VisualStudio.LanguageServices.VisualStudioWorkspace

のVisual Studio 2017バージョン15.3の使用2.3。 2バージョン。あなたの拡張機能は2.2.0より低いバージョンを使用し、そこで動作します。 NuGetのコンポーネントを2.3.2にアップデートすると、拡張機能は15.3で動作し、15.2では機能しません。

2.2.0を使用してください。

+1

+1のための ''。残念ながらこれはちょっとした回避策であり、同じ例外が発生します。 'VisualStudioWorkspace'から派生した' RoslynVisualStudioWorkspace'があるように、2つのライブラリが必要です。私は前者がVisual Studioから来て、後者が組み込みアセンブリのクラスであると思われます。これらのクラスでは、CLRによって同じ継承階層から来るものとしては一致しません。結局、それは動作しませんし、これを解決しようとしている間に自分の道を失うように見えるので、私はこの答えをそのまま受け入れることはできません。 –

+0

これをコメントに追加したいと思いました。しかし、stackoverflowは低い評判のため私を与えていません –

+0

はい、私は私と同じ状況を、いくつかの時間前に覚えています。 –

0

OK、取得しました。

vsixプロジェクトのbinフォルダをクリーンアップするだけです。残りはあなたの説明に基づいて

enter image description here

+0

私はそれについて言及していませんが、通常これはソリューションディレクトリのバックアップを作成した直後の2番目のことです。だから、それはあなたのために働いたが、それは私の場合の問題を解決していないおめでとう。とにかくありがとう。 –

関連する問題