Visual Studio 项目模板支持新的 csproj 格式
Visual Studio Project Template Support for new csproj format
我正在 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 中包含单个文件,它会自动选取项目文件夹中的所有文件。
但是当我从 csproj 中删除 <Compile>
标签时,模板不再复制文件。
我什至在使用 IWizard
,我可以看到 Visual Studio 对 IWizard.ShouldAddProjectItem(string)
的调用,而我 return 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
(simply migrating the old sdk format to the new sdk format still has various compatibility issues
) ,因此,最终模板仍然适用于网络框架项目而不是 net core/net standard
项目。
作为建议,
我建议您可以创建一个新的 sdk 格式项目,根据需要进行一些需求更改,然后使用 VS UI 选项 Export Project Template 导出此类新的 sdk 格式项目,我认为这将效果不错。
此外,如果您仍想创建适用于新 sdk 格式项目的项目模板,我们建议您可以 post 在 our User Voice forum(DC)----suggest a feature
分享您的想法,团队会认真考虑您的想法,给您满意的答复。
我正在 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 中包含单个文件,它会自动选取项目文件夹中的所有文件。
但是当我从 csproj 中删除 <Compile>
标签时,模板不再复制文件。
我什至在使用 IWizard
,我可以看到 Visual Studio 对 IWizard.ShouldAddProjectItem(string)
的调用,而我 return 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
(simply migrating the old sdk format to the new sdk format still has various compatibility issues
) ,因此,最终模板仍然适用于网络框架项目而不是 net core/net standard
项目。
作为建议,
我建议您可以创建一个新的 sdk 格式项目,根据需要进行一些需求更改,然后使用 VS UI 选项 Export Project Template 导出此类新的 sdk 格式项目,我认为这将效果不错。
此外,如果您仍想创建适用于新 sdk 格式项目的项目模板,我们建议您可以 post 在 our User Voice forum(DC)----suggest a feature
分享您的想法,团队会认真考虑您的想法,给您满意的答复。