在 Visual Studio 中使用宏设置 using 语句

问题描述 投票:0回答:0

我正在 Visual Studio 中构建模板。该模板由 3 个 C# 项目组成。项目名称如下:我根据模板创建的解决方案的名称,后跟项目 1/项目 2/项目 3。例如,如果我调用从我的模板 SolutionProject 创建的解决方案,则 3 个项目的项目名称分别为:SolutionProject.Project1/Project2/Project3。我在我的 .vstemplate 中使用以下宏来执行此操作:

<ProjectCollection>
  <ProjectTemplateLink ProjectName="$projectname$.Project1">Project1\MyTemplate.vstemplate</ProjectTemplateLink>
  <ProjectTemplateLink ProjectName="$projectname$.Project2">Project2\MyTemplate.vstemplate</ProjectTemplateLink>
  <ProjectTemplateLink ProjectName="$projectname$.Project3">Project3\MyTemplate.vstemplate</ProjectTemplateLink>
</ProjectCollection>

为了修复导致问题的引用,我在每个项目的 .csproj 中使用了以下宏。例如,对于引用 Project2 的 Project3,我使用了:

<ItemGroup>
<ProjectReference Include="..\$(ProjectName.Replace('.Project3', '')).Common\$(ProjectName.Replace('.Project3', '')).Project2.csproj">
  <Project>{GUID}</Project>
  <Name>$(ProjectName.Replace('.Project3', '')).Project2</Name>
</ProjectReference>

否则,引用将是 NameOfProject.Project3.Project2 而不是所需的 NameOfProject.Project2。

最后,我必须更改 C# 文件中的 using 语句。我一直尝试这样做的一种方法是在 .cs 文件中使用 $safeprojectname$ 宏,并且该宏似乎有效。但是,我遇到了与参考文献类似的问题。如果我在 NameOfProject.Project3 项目的 .cs 文件中使用 $safeprojectname$.Project2 宏,这将转换为使用 NameOfProject.Project3.Proejct2;请注意,NameOfProject 是一个通用名称,它可以取任何值,它采用您为使用模板构建的项目提供的名称。我在参考资料中使用的解决方案不起作用,我的想法已经用完了。

c# templates macros using multi-project
© www.soinside.com 2019 - 2024. All rights reserved.