首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为.NET标准2.0创建新的类库模板不会复制源文件

为.NET标准2.0创建新的类库模板不会复制源文件
EN

Stack Overflow用户
提问于 2018-04-20 21:21:28
回答 1查看 603关注 0票数 1

在使用automatic VS2017 tools为.Net Standard 2.0中的类库创建新模板时,会出现此问题。从该模板创建新项目时,不会复制源文件(.cs)。

虽然我需要复杂的模板,但我会用最简单的例子来解释这个问题。

创建一个新模板: new Project在VS2017中,选择类库.NET Standard。在这个“空”项目中,创建模板,单击Project>Export Template> chose the created project, and then finish.

从最近创建的模板创建新项目:添加新项目,选择新模板,然后接受。

生成的新项目没有该项目的源文件(.cs)。

这显然是一个问题,因为对类库执行完全相同的操作,即.NET Framework工作得很好。

代码语言:javascript
运行
复制
Classlibrary1.csproj

<Project Sdk="Microsoft.NET.Sdk">  
  <PropertyGroup>    
    <TargetFramework>netstandard2.0</TargetFramework>  
  </PropertyGroup>
</Project>

MyTemplate.vstemplate

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

我尝试了不同的“解决方案”,但它们对我不起作用。https://developercommunity.visualstudio.com/content/problem/37226/new-project-missing-files-from-exported-project-te.html

https://github.com/dotnet/standard/issues/605

EN

回答 1

Stack Overflow用户

发布于 2018-04-24 20:05:02

创建新模板时,Visual Studio将其保存在C:\Users\User\Documents\Visual Studio 2017\Templates\C:\Users\User\Documents\Visual Studio 2017\My Exported Templates\中,但Visual Studio仅从\Templates读取模板。

问题是,默认情况下,模板CreateInPlace的参数应该是true。但是对于.Net Standard,您必须设置该值。要执行此操作,请转到文件夹\Templates\,找到模板并解压缩,删除压缩文件。打开模板文件并添加值:

代码语言:javascript
运行
复制
MyTemplate.vstemplate
  ....
  <Icon>__TemplateIcon.ico</Icon>
  <CreateInPlace>true</CreateInPlace>
</TemplateData>
....

它应该已经起作用了。不要试图再次压缩模板,将无法从压缩中正确读取。

如果有人有更好的答案,请分享。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49942653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档