2017-05-24 28 views
2

私はテンプレート([コンポーネント]の自動登録を含むインストール可能なVSIX出力にコンパイルされたもの)に基づいてシングルファイルジェネレータを実装しました。 :Visual Studioの.NET標準プロジェクトでシングルファイルジェネレータが動作しない2017

  • これはVS 2015およびVS2017のクラシック.NETプロジェクトで機能します。
  • これはVS2017の.NETコアプロジェクトで動作します。
  • しかし、VS2017の.NET標準プロジェクトでは機能しません。

example

HasCustomTool.xmlファイルはすべて、同一の構成を有し、それらのすべては、「カスタムツール」属性が指定されています。

ファイル.csprojを見ると、それらが異なっていることがわかります。 DotNetCore.csprojファイルの(作業)内容は次のとおりです。

<ItemGroup> 
    <Compile Update="HasCustomTool.cs"> 
     <DependentUpon>HasCustomTool.xml</DependentUpon> 
     <DesignTime>True</DesignTime> 
     <AutoGen>True</AutoGen> 
    </Compile> 
    </ItemGroup> 

    <ItemGroup> 
    <None Update="HasCustomTool.xml"> 
     <LastGenOutput>HasCustomTool.cs</LastGenOutput> 
     <Generator>PtResxErrorTool</Generator> 
    </None> 
    </ItemGroup> 

DotNetStandard.csprojファイルが持っているのに対し:

<ItemGroup> 
     <None Update="HasCustomTool.xml"> 
      <LastGenOutput>HasCustomTool.cs</LastGenOutput> 
      <Generator>PtResxErrorTool</Generator> 
     </None> 
    </ItemGroup> 

あなたは(手で)DotNetCore.csprojからDotNetStandard.csprojへのマークアップをコピーすると、あなたが得るを発電機は決して活性化されない。

.NET Standardプロジェクト用のVSIXシングルファイルジェネレータを作成した人は誰ですか?どのようにこの問題をデバッグする上の任意のポインターですか?

[1] https://github.com/Microsoft/VSSDK-Extensibility-Samples/tree/master/Single_File_Generator

+1

カスタムツールを実行しているのと同じだが同一ではない問題がありました。以前はVS2017をインストールしていた私のPCにVS2015をインストールしました。問題の詳細はhttps://developercommunity.visualstudio.com/content/problem/72482/custom-tool-not-found.html?childToView=73591#comment-73591 –

+0

にあります。https:///stackoverflow.com/questions/44616852/visual-studio-2017-wont-run-custom-tool-in-net-standard-library –

+0

このプロジェクトでどのように最初の拠点になったのですか? Microsoft.VisualStudio.Shell.Interopは.NET Standardバージョンと互換性がありません。少なくともそれはNuGetローダーが私に言っているものです。 –

答えて

3

をあなたのクラスに新しいCodeGeneratorRegistrationを追加する必要があります。

"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}"

私の場合、私のクラス赤緯は、ソース情報はこのスレッド

https://github.com/aspnet/Tooling/issues/394

から来た

[ComVisible(true)] 
[Guid(GuidList.GuidI18NReactivetring)] 
[ProvideObject(typeof(I18NReactive))] 
[CodeGeneratorRegistration(typeof(I18NReactive), "I18N.Reactive", vsContextGuids.vsContextGuidVCSProject, GeneratesDesignTimeSource = true)] 
[CodeGeneratorRegistration(typeof(I18NReactive), "I18N.Reactive", "{9A19103F-16F7-4668-BE54-9A1E7A4F7556}", GeneratesDesignTimeSource = true)] 
public class I18NReactive : IVsSingleFileGenerator, IObjectWithSite 
{ 
} 

のように見えました

+0

どのようにして.NET標準ライブラリでMicrosoft.VisualStudio.Shell.Interopパッケージを参照できるようになりましたか? Nuget Package Managerを使用してパッケージを追加しようとすると、VS Interopパッケージが.NET Standardと.NET Coreライブラリの両方と互換性があるというメッセージが表示されます。 –

関連する問題