C# $safeprojectname$isn';在IWizard.RunStarted方法中不安全

C# $safeprojectname$isn';在IWizard.RunStarted方法中不安全,c#,visual-studio,visual-studio-extensions,vsix,C#,Visual Studio,Visual Studio Extensions,Vsix,我已经实现了这个接口,我想获得$safeprojectname$。因此,我使用以下代码: public void RunStarted(object automationObject, Dictionary<string, string> replacementsDictionary, WizardRunKind runKind, object[] customParams) { var safeProjectName = replacementsDictionary["$s

我已经实现了这个接口,我想获得
$safeprojectname$
。因此,我使用以下代码:

public void RunStarted(object automationObject, Dictionary<string, string> replacementsDictionary, WizardRunKind runKind, object[] customParams) {
    var safeProjectName = replacementsDictionary["$safeprojectname$"];
}
public void RunStarted(对象自动对象、字典替换Dictionary、向导runKind runKind、对象[]customParams){
var safeProjectName=replacementsDictionary[“$safeProjectName$”];
}
但在本例中,
safeProjectName
是一个包含规范符号的字符串,如
-
+
等。例如,如果用户将项目名称设置为
My-project-1
$safeProjectName$
将是
My-project-1
。我希望
我的\u项目\u 1

我是否应该手动替换所有不安全的符号

根据这一点,它应该在不进行任何操作的情况下工作,但它不会:

safeitemname—用户在“添加新项目”对话框中提供的名称,删除了所有不安全的字符和空格

附言:

在VS Professional 2015和VS Professional 2017中复制

例如,用户将项目名称设置为My-project-1$safeprojectname$将是My-project-1。我期待我的项目

您可以将“-”替换为“-”,如下所示:

 var safeProjectName = replacementsDictionary["$safeprojectname$"];

 replacementsDictionary["$safeprojectname$"] = replacementsDictionary ["$safeprojectname$"].Replace("-", "_");
例如,用户将项目名称设置为My-project-1$safeprojectname$将是My-project-1。我期待我的项目

您可以将“-”替换为“-”,如下所示:

 var safeProjectName = replacementsDictionary["$safeprojectname$"];

 replacementsDictionary["$safeprojectname$"] = replacementsDictionary ["$safeprojectname$"].Replace("-", "_");