2015-01-15 25 views
0

从“How to handle VSTO prerequisites in SideWaffle project template”开始,我发现在选择项目属性中的发布选项卡时,从安装的VSIX创建的新项目会使Visual Studio崩溃。对原始项目模板和新生成的项目中的项目文件进行差异化后,看起来ProjectExtensions节点没有达到新文件。如何使用SideWaffle在VSTO csproj中包含缺少的ProjectExtensions

这里的原始项目文件片段:

<Project> 
<!-- Include the build rules for a C# project. --> 
    <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> 
    <!-- Include additional build rules for an Office application add-in. --> 
    <Import Project="$(VSToolsPath)\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets" Condition="'$(VSToolsPath)' != ''" /> 
    <!-- This section defines VSTO properties that describe the host-changeable project properties. --> 
    <ProjectExtensions> 
    <VisualStudio> 
     <FlavorProperties GUID="{BAA0C2D2-18E2-41B9-852F-F413020CAA33}"> 
     <ProjectProperties HostName="Visio" HostPackage="{29A7B9D7-A7F1-4328-8EF0-6B2D1A56B2C1}" OfficeVersion="15.0" VstxVersion="4.0" ApplicationType="Visio" Language="cs" TemplatesPath="" DebugInfoExeName="#Software\Microsoft\Office\15.0\Visio\InstallRoot\Path#visio.exe" AddItemTemplatesGuid="{51063C3A-E220-4D12-8922-BDA915ACD783}" /> 
     <Host Name="Visio" GeneratedCodeNamespace="VisioVstoTemplate" IconIndex="0"> 
      <HostItem Name="ThisAddIn" Code="ThisAddIn.cs" CanonicalName="AddIn" CanActivate="false" IconIndex="1" Blueprint="ThisAddIn.Designer.xml" GeneratedCode="ThisAddIn.Designer.cs" /> 
     </Host> 
     </FlavorProperties> 
    </VisualStudio> 
    </ProjectExtensions> 
</Project> 

...这是来自新的项目文件中的相同片段:

<Project> 
<!-- Include the build rules for a C# project. --> 
    <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> 
    <!-- Include additional build rules for an Office application add-in. --> 
    <Import Project="$(VSToolsPath)\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets" Condition="'$(VSToolsPath)' != ''" /> 
    <!-- This section defines VSTO properties that describe the host-changeable project properties. --> 
</Project> 

有没有好的办法被排除停止此?

回答

2

当您安装TemplateBuilder时,.props文件将添加到属性下的项目中。默认情况下,构建项目模板时会删除ProjectExtensions。要禁用将下列属性添加到.props文件。

<ls-enable-remove-proj-extensions>false</ls-enable-remove-proj-extensions> 
+0

很好,这个工作很完美(当设置为false时 - 是一个错字?),并且GeneratedCodeNamespace属性也被正确地替换了。出于兴趣,默认情况下删除ProjectExtensions的基本原理是什么?再次感谢。 – JohnGoldsmith

+0

@JohnGoldsmith web项目(以及我认为的其他类型的项目)存储临时和特定于该项目(即IIS Express端口)的值。所以他们应该在VS中打开项目时重新创建。 –

+0

好的。感谢您的解释 – JohnGoldsmith