我根据以下视频制作了一个带SideWaffle的VSTO项目模板:
How to create Visual Studio project templates with TemplateBuilder and SideWaffle
我添加了一个现有的(新)存根VSTO项目,将其设置为不在调试和发布中构建,但是当我按Ctrl + F5启动实验VS实例时,我得到以下三个构建错误:
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
所以问题是:
(使用Visual Studio 2013 Ultimate(更新4),SideWaffle 1.15和TemplateBuilder 1.1.2-beta5)
答案 0 :(得分: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项ls-NonFileTypes
知道哪种方式。其默认值在https://github.com/ligershark/template-builder/blob/master/tools/ligershark.templates.targets#L75的.targets文件中定义。
很可能VSTO项目使用了一些我还没有看到的其他元素名称,这些名称应该添加到默认列表中。
查看项目文件并检查ItemGroup
下的元素名称以及Include
属性中没有文件路径的元素的名称(如果尚未列出的话in the default list那个问题。
在安装了TemplateBuilder的项目中,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。