Visual Basicプロジェクトファイルのすべてのインポートを検索してリバースエンジニアリングした後、そのファイルを使用できるようになりました。インポートされたターゲットの1つでこれが見つかりました。
<!-- Import design time targets for Roslyn Project System. These are only available if Visual Studio is installed. -->
<!-- Import design time targets before the common targets, which import targets from Nuget. -->
<PropertyGroup>
<VisualBasicDesignTimeTargetsPath Condition="'$(VisualBasicDesignTimeTargetsPath)'==''">$(MSBuildExtensionsPath)\Microsoft\VisualStudio\Managed\Microsoft.VisualBasic.DesignTime.targets</VisualBasicDesignTimeTargetsPath>
</PropertyGroup>
<Import Project="$(VisualBasicDesignTimeTargetsPath)" Condition="'$(VisualBasicDesignTimeTargetsPath)' != '' and Exists('$(VisualBasicDesignTimeTargetsPath)')" />
には、Microsoft \ VisualStudioを\ $(MSBuildExtensionsPath)は\マネージドインポートされたファイル\ Microsoft.Managed.DesignTime.targetsを検索した後、私は次のコードを見つけました。
<ProjectCapability Include="
AssemblyReferences;
COMReferences;
ProjectReferences;
PackageReferences;
SharedProjectReferences;
OutputGroups;
AllTargetOutputGroups;
VisualStudioWellKnownOutputGroups;
SingleFileGenerators;
DeclaredSourceItems;
UserSourceItems;" />
私のプロジェクトターゲットファイルにプロジェクト機能を追加すると、NuGetパッケージが動作します!私はそれらのすべてが必要であるかどうか分からないが、私はそれを絞り込むことができず、その動作は私のアプリケーションにとってうまくいくようだ。
ここには、誰かが検索している場合の機能のリストがあります。 https://github.com/Microsoft/VSProjectSystem/blob/master/doc/overview/project_capabilities.md
編集
ただ、しばらくの間、溶液で働いた後、この問題をフォローアップします。機能の詳細については、こちらを参照してください。 https://docs.microsoft.com/en-us/nuget/visual-studio-extensibility/project-system-support
これでVSにNuGetパッケージマネージャが有効になりますが、インストールは失敗します。解決策は、それを機能させるために多くのクラスを実装する必要があります。
VSの外では、NuGetクライアントのexeでより簡単に動作しますが、カスタムプロジェクト拡張には少し変更が必要です。 NuGetソースをダウンロードした場合、コードではプロジェクトファイルがハードコードされた拡張子のリストのみで更新されることがわかります。したがって、ソリューションパッケージまたはpackages.configファイルを更新または復元する場合は、拡張機能をリストに追加する必要があります。そうすれば、プロジェクトファイルを見つけてその上でアクションを実行します。
これを有効にするには、NuGetのソースコードを変更する必要があります。 [MSBuildNuGetProjectSystemFactoryクラス(https://github.com/NuGet/NuGet.Client/blob/7985322db49b11340ad4bf0c73247c9bd0096621/src/NuGet.Clients/NuGet.PackageManagement.VisualStudio/ProjectSystems/MSBuildNuGetProjectSystemFactory.cs#L22-L28)は、いくつかのプロジェクトのシステムを示していますNuGetでサポートされています。 –