c# - Visual Studio 项目模板支持新的 csproj 格式

标签 c# visual-studio visual-studio-2019 visual-studio-extensions

我正在 Visual Studio 2019 中创建一些模板,以使用新的 .csproj 格式(基于 SDK 属性),但我遇到了问题。

通常,如果你想在模板中包含一个文件,你将它添加到 .vstemplate 中:

  <TemplateContent>
    <Project File="ProjectTemplate.csproj" ReplaceParameters="true">
      <ProjectItem ReplaceParameters="true" TargetFileName="$classprefix$Config.cs">ProjectTemplateConfig.cs</ProjectItem>
    </Project>
  </TemplateContent>

在 .csproj 中:

<ItemGroup>
    <Compile Include="$classprefix$Config.cs" />
</ItemGroup>

一切正常。

但是,我正在尝试使用您在.csproj 中包含单个文件的新格式,它会自动选取项目文件夹中的所有文件。

但是当我删除 <Compile>来自 csproj 的标记,模板不再复制文件。

我什至在使用 IWizard ,我可以看到 Visual Studio 对 IWizard.ShouldAddProjectItem(string) 的调用我返回true , 但它不会添加它。

在使用 WPF 时需要更加极端,如果你添加第二个 <Page>标记,编译器实际上会抛出一个错误。

Visual Studio 模板是否支持新的 .csproj 格式?如果是这样,我如何让它复制文件,而不管它们是否存在于 .csproj 文件中?

最佳答案

Do Visual Studio templates support the new .csproj format? And if so, how can I have it copy files regardless of their presence in the .csproj file?

事实上,目前VS不支持为新的sdk格式项目创建项目模板。

实际上,VS2019只有Net Framework项目模板,用于创建旧的sdk格式项目。而如果像你的情况那样简单的将此类工程中的xxxx.csproj文件修改成新的sdk格式,但是模板工程本身的框架还是net framework(简单地将旧的sdk格式迁移到新的sdk格式仍然存在各种兼容性问题),因此最终模板仍然适用于net框架项目而不是net core/net标准项目。

作为建议

我建议您可以创建一个新的 sdk 格式项目,根据需要进行一些需求更改,然后使用 VS UI 选项 Export Project Template导出此类新的 sdk 格式项目,我认为这会很有效。

此外,如果您仍想创建适用于新 sdk 格式项目的项目模板,我们建议您可以在 our User Voice forum(DC) 中发布功能请求。 ----suggest a feature分享您的想法,团队会认真考虑您的想法并给您满意的答复。

关于c# - Visual Studio 项目模板支持新的 csproj 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60713205/

相关文章:

c# - 在构造函数内部调用的方法内初始化字段时出现不可为空字段警告 (CS8618)

Visual Studio 2019 中的 Git 同步

c# - 使用 HttpClient 在 localhost 上调用 rest api 导致 401 Unauthorized,IIS 8.5

c# - 如何使用 UWP 在图像上绘制文本并保存(适用于 Windows 10)

c# - MarkupExtension 对 Setter.Value 无效。唯一支持的 MarkupExtension 类型是 DynamicResourceExtension 和 BindingBase 或派生类型

javascript - Typescript 的导入无法解析外部模块

c# - 是否可以从移动和桌面应用程序访问同一个 Firestore 集合?

c# - 将流程标准输出连接到另一个流程标准输入

visual-studio-2017 - Visual Studio 2017 中的依赖关系中的黄色警告三角形意味着什么?

c++ - 带有IMPLEMENT_DYNCREATE的Microsoft Visual Studio C++ 2019编译器错误