【问题标题】:How to create an evaluated Custom Parameter in a VSTemplate如何在 VSTemplate 中创建评估的自定义参数
【发布时间】:2011-12-25 17:52:20
【问题描述】:

所以我正在修改一个多项目 VS 模板(Visual Studio 项目模板),并且我想在根模板中设置一个自定义参数以供子模板使用。但是,我想根据现有参数进行设置。

因此,例如,这可以正常工作:

<CustomParameter Name="$FaultProject$" Value="MyProject.FaultContracts"/>

变量 $FaultProject$ 应该被 MyProject.FaultContracts 替换。

但是,这不起作用:

<CustomParameter Name="$FaultProject$" Value="$safeprojectname$.FaultContracts"/>

我希望 $safeprojectname$ 被正确的值替换,但事实并非如此。而是将变量 $FaultProject$ 替换为 $safeprojectname$.FaultContracts。 $safeprojectname$ 被解释为文字而不是它的参数。

尽管在同一个文件中,这完全符合预期:

<ProjectTemplateLink ProjectName="$safeprojectname$.FaultContracts">WCFFaultContract\FaultContract.vstemplate</ProjectTemplateLink>

任何想法都会有所帮助。我相信我也许可以编写一个 IWizard 类来执行此操作,但如果可能的话,我宁愿避免为这样一个简单的函数使用它。

或者,如果我可以得到一个包含根模板 $safeprojectname$ 值的参数,那也可以满足我的需要(在子模板中,$safeprojectname$ 更改为子项目的名称,而不是它在根模板中的值)。

【问题讨论】:

  • 你有没有想过如何解决这个问题?
  • 不,我从来没有找到好的答案。看起来,就像我在上面担心的那样,我将不得不编写一个 IWizard 界面。稍后我将不得不回到它,因为项目截止日期意味着仅手动编辑项目和解决方案文件比编写 IWizard 解决方案要快。我想最终,因为这会再次出现(首先是模板的全部意义)。我希望有一个解决方案可以解决这个问题,而不需要我的团队在他们所有的机器上添加一段额外的自定义代码才能工作,但这就是我剩下的。

标签: c# templates parameters visual-studio-templates


【解决方案1】:

在多项目模板中,您基本上只能在项目级别使用替换参数。根模板位于解决方案级别,您基本上不能在其中包含 $safeprojectname$。但是,您可以实现 IWizard 接口,并且可以有自己的替换参数,替换为您提供的值。

【讨论】:

    猜你喜欢
    • 2020-09-08
    • 1970-01-01
    • 2021-06-30
    • 2011-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多