新csproj格式的Visual Studio项目模板支援

6yoyoihd  于 2022-11-17  发布在  其他
关注(0)|答案(2)|浏览(174)

我正在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)的调用,我返回了true,但是它没有添加它。
在使用WPF时,这种需求更为极端,因为如果添加第二个<Page>标记,编译器实际上将抛出错误。
Visual Studio模板是否支持新的.csproj格式?如果支持,如何让它复制文件而不管它们是否存在于.csproj文件中?

tsm1rwdh

tsm1rwdh1#

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

事实上VS目前不支持为新的sdk格式项目创建项目模板。
实际上VS 2019只有Net Framework工程模板,用于创建旧sdk格式的工程,如果像您的情况一样,简单地将此类工程中的xxxx.csproj文件修改为新sdk格式,但模板工程本身的框架仍然是net frameworksimply migrating the old sdk format to the new sdk format still has various compatibility issues),因此,最终的模板仍然适用于net framework项目,而不是net core/net standard项目。
作为建议

我建议你可以创建一个新的sdk格式的项目,做一些需求的变化,因为你想要的,然后使用VS UI选项Export Project Template导出这样的新sdk格式的项目,我认为这将工作得很好。

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

a14dhokn

a14dhokn2#

我在Visual Studio 2022中得到了这个工作。
我将<CreateInPlace>true</CreateInPlace>添加到vstemplate文件,然后即使设置<EnableDefaultCompileItems>true</EnableDefaultCompileItems>(默认为true),也会复制所有文件

相关问题