Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio VisualStudio项目模板替换了$(SolutionDir)“;生成时模板中的宏_Visual Studio_Templates_Msbuild_Csproj_Visual Studio Templates - Fatal编程技术网

Visual studio VisualStudio项目模板替换了$(SolutionDir)“;生成时模板中的宏

Visual studio VisualStudio项目模板替换了$(SolutionDir)“;生成时模板中的宏,visual-studio,templates,msbuild,csproj,visual-studio-templates,Visual Studio,Templates,Msbuild,Csproj,Visual Studio Templates,我正在尝试制作一个项目模板供内部使用,其中包含我们的组装版本控制系统的所有自定义部分 默认项目模板与预构建和后构建事件完美配合,但当我尝试使用$(SolutionDir)宏引用文件时,它会在构建模板和 <ItemGroup> <Compile Include="$(SolutionDir)\CommonAssemblyInfo.cs"> <Link>Properties\CommonAssemblyInfo.cs</Link>

我正在尝试制作一个项目模板供内部使用,其中包含我们的组装版本控制系统的所有自定义部分

默认项目模板与预构建和后构建事件完美配合,但当我尝试使用
$(SolutionDir)
宏引用文件时,它会在构建模板和

<ItemGroup>
   <Compile Include="$(SolutionDir)\CommonAssemblyInfo.cs">
      <Link>Properties\CommonAssemblyInfo.cs</Link>
   </Compile>
   <Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>

属性\CommonAssemblyInfo.cs
当项目模板用于在解决方案中生成项目时,将转换为以下内容:

<ItemGroup>
   <Compile Include="..\..\..\..\..\Users\<username>\AppData\Local\Temp\n0u03z2x.gpe\CommonAssemblyInfo.cs">
     <Link>Properties\CommonAssemblyInfo.cs</Link>
   </Compile>
   <Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>

属性\CommonAssemblyInfo.cs
模板
build/package
过程可能正在取代此过程

我怎样才能逃脱呢

Visual studio项目模板在生成时替换模板中的“$(SolutionDir)”宏

您应该在导出的项目模板的
.vstemplate
文件中将其设置为true,如
true

以下是我的
.vstemplate
文件:

<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Project">
  <TemplateData>
    <Name>TestDemo</Name>
    <Description>&lt;No description available&gt;</Description>
    <ProjectType>CSharp</ProjectType>
    <ProjectSubType>
    </ProjectSubType>
    <SortOrder>1000</SortOrder>
    <CreateNewFolder>true</CreateNewFolder>
    <DefaultName>TestDemo</DefaultName>
    <ProvideDefaultName>true</ProvideDefaultName>
    <LocationField>Enabled</LocationField>
    <EnableLocationBrowseButton>true</EnableLocationBrowseButton>
    <Icon>__TemplateIcon.ico</Icon>
    <CreateInPlace>true</CreateInPlace>
  </TemplateData>
  <TemplateContent>
    <Project TargetFileName="TestDemo.csproj" File="TestDemo.csproj" ReplaceParameters="true">
      <ProjectItem ReplaceParameters="true" TargetFileName="Class1.cs">Class1.cs</ProjectItem>
      <Folder Name="Properties" TargetFolderName="Properties">
        <ProjectItem ReplaceParameters="true" TargetFileName="AssemblyInfo.cs">AssemblyInfo.cs</ProjectItem>
      </Folder>
    </Project>
  </TemplateContent>
</VSTemplate>

测试演示
没有可用的描述
CSharp
1000
真的
测试演示
真的
启用
真的
__TemplateIcon.ico
真的
类别1.cs
AssemblyInfo.cs
详细步骤:

  • 导出项目模板而不使用自动将模板导入Visual Studio

  • 解压缩导出的文件,将
    true
    添加到
    MyTemplate.vstemplate
    文件中,然后压缩所有文件

  • 将此文件复制到文件夹:
    C:\Users\\Documents\visualstudio 2017\Templates\ProjectTemplates

  • 重新启动Visual Studio,使用新的自定义模板创建新项目

  • 使用此设置,此问题应该得到修复。但奇怪的是,文档声明
    CreateInPlace
    的默认值为true

    希望这有帮助