Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在VSTemplate中创建经过计算的自定义参数_C#_Templates_Parameters_Visual Studio Templates - Fatal编程技术网

C# 如何在VSTemplate中创建经过计算的自定义参数

C# 如何在VSTemplate中创建经过计算的自定义参数,c#,templates,parameters,visual-studio-templates,C#,Templates,Parameters,Visual Studio Templates,因此,我正在修改一个多项目VS模板(VisualStudio项目模板),我想在根模板中设置一个自定义参数,以供子模板使用。但是,我想基于现有参数设置它 例如,这很好: 变量$FaultProject$被MyProject.FaultContracts替换,应该如此 但是,这不起作用: 我希望$safeprojectname$被正确的值替换,但事实并非如此。相反,变量$FaultProject$被$safeprojectname$.FaultContracts替换。$safeprojectna

因此,我正在修改一个多项目VS模板(VisualStudio项目模板),我想在根模板中设置一个自定义参数,以供子模板使用。但是,我想基于现有参数设置它

例如,这很好:

变量$FaultProject$被MyProject.FaultContracts替换,应该如此

但是,这不起作用:

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

尽管在同一个文件中,其工作原理与预期完全相同:

WCFFaultContract\FaultContract.vstemplate

任何想法都会有帮助。我相信我可能能够编写一个IWizard类来实现这一点,但如果可能的话,对于这样一个简单的函数,我宁愿避免这样做


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

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

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