0

次のビデオに従って、SideWaffle を使用して VSTO プロジェクト テンプレートを作成しています。

TemplateBuilder と SideWaffle を使用して Visual Studio プロジェクト テンプレートを作成する方法

既存の (新しい) スタブ VSTO プロジェクトを追加し、デバッグとリリースの両方でビルドしないように設定しましたが、Ctrl+F5 を押して実験的な VS インスタンスを起動すると、次の 3 つのビルド エラーが発生します。

Could not copy the file "c:\users\john\documents\visual studio 2013\Projects\VisioVstoTemplate\VisioVstoTemplate\.NETFramework,Version=v4.5" because it was not found.  VisioVstoVSIX
Could not copy the file "c:\users\john\documents\visual studio 2013\Projects\VisioVstoTemplate\VisioVstoTemplate\Microsoft.VSTORuntime.4.0" because it was not found.   VisioVstoVSIX
Could not copy the file "c:\users\john\documents\visual studio 2013\Projects\VisioVstoTemplate\VisioVstoTemplate\Microsoft.Windows.Installer.4.5" because it was not found. VisioVstoVSIX

質問は次のとおりです。

  1. そもそもなぜこれらの前提条件が求められているのか、そして
  2. どうすればエラーを防ぐことができますか?

(Visual Studio 2013 Ultimate (Update 4)、SideWaffle 1.15、および TemplateBuilder 1.1.2-beta5 を使用)

4

1 に答える 1

1

ここで何が起こっているのかを正確に知っていると確信しています。VSTO プロジェクトで SideWaffle/TemplateBuilder をテストしたことはありません。

テンプレートが構築さ_project.vstemplate.xmlれると、プロジェクト ファイルのファイルを使用して の内容が取り込まれるステップがあります。そのため、プロジェクトにリストされているすべてのファイルがまだリストされていない場合は、xml ファイルに追加されます。これは、 内の要素としてリストされている項目を調べることによって実装されます<ItemGroup></ItemGroup>。例えば

<ItemGroup> <Compile Include="App_Start\BundleConfig.cs" /> <Compile Include="App_Start\FilterConfig.cs" /> <Compile Include="App_Start\IdentityConfig.cs" /> </ItemGroup>

これらの要素は、ファイルではなく、コピーしてはならないアイテムを指している場合があります。例えば。

<ItemGroup> <Reference Include="Microsoft.CSharp" /> <Reference Include="System" /> <Reference Include="System.Data" /> </ItemGroup>

TemplateBuilder がどちらを MSBuild item によって認識するかls-NonFileTypes。このデフォルト値は、https: //github.com/ligershark/template-builder/blob/master/tools/ligershark.templates.targets#L75 の .targets ファイルで定義されています。

VSTO プロジェクトでは、まだ見たことのない他の要素名が使用されている可能性があります。これを既定のリストに追加する必要があります。

回避方法

プロジェクト ファイルを見て、要素の名前を調べてItemGroup、属性にファイル パスが含まれていない要素が問題である既定のリストにIncludeまだリストされていない場合。

TemplateBuilder がインストールされているプロジェクトでは、新しい props ファイルが にありますProperties\template-builder.props。プロジェクトでフィルタリングする項目タイプを決定したら、それをそのファイルに追加できます。例えば。

<ItemGroup> <ls-NonFileTypes Include="Service;BootstrapperPackage;"/> </ItemGroup>

または、次のように宣言することもできます(同等です)

xml <ItemGroup> <ls-NonFileTypes Include="Service"/> <ls-NonFileTypes Include="BootstrapperPackage"/> </ItemGroup>

SideWaffle もこれを使用しますhttps://github.com/ligershark/side-waffle/blob/master/TemplatePack/Properties/template-builder.props#L30

于 2015-01-14T04:03:30.303 に答える