何が起こっているのかを追跡しました。長い投稿になるので、@ThBlitzの問題を説明する新しい回答を作成します
これは答えではありませんが、上記の問題の詳細な説明であり、長々と申し訳ありません。
だから私はcsprojを変更するためにIWizardの実装をセットアップし、@Sayedと議論したように私は彼の解決策を試しました。これが私の発見です。
これはIWizard
実装の興味深い部分です
public void RunStarted(object automationObject, Dictionary<string, string> replacementsDictionary, WizardRunKind runKind, object[] customParams)
{
replacementsDictionary.Add("$companynamespace$", "Infomedia");
}
そしてその_preprocess.xml
<?xml version="1.0" encoding="utf-8" ?>
<Preprocess>
<TemplateInfo Path="CSharp\Infomedia"/>
<Replacements Include="*.*" Exclude="*.vstemplate;*.csproj;*.jpg;*.png;*.ico;_preprocess.xml;_project.vstemplate.xml">
<add key="ConsoleApp" value="$safeprojectname$"/>
<add key="RootNamespace" value="$companynamespace$.$safeprojectname$"/>
<add key="AssemblyName" value="$companynamespace$.$safeprojectname$"/>
<add key="namespace" value="namespace $companynamespace$.$safeprojectname$"/>
</Replacements>
</Preprocess>
名前空間の部分は、ウィザードが実行されることをテストするためだけのものです。実験的な VS のテンプレートのすべてのクラスで名前空間の変更を確認できるため、実際にはそうです。(クラスは無効になりますが、少なくともウィザードの実行が表示されます)。
しかし、それはRootNamespace
andを変更する必要があり、それを行うには、Assemblyname
の除外を削除する必要があります*.csproj
_preprocess.xml
この変更を行うと、xml が無効になります。洗浄例_preprocess.xml
<?xml version="1.0" encoding="utf-8" ?>
<Preprocess>
<TemplateInfo Path="CSharp\Infomedia"/>
<Replacements Include="*.*" Exclude="*.vstemplate;*.jpg;*.png;*.ico;_preprocess.xml;_project.vstemplate.xml">
<add key="ConsoleApp" value="$safeprojectname$"/>
<add key="RootNamespace" value="$companynamespace$.$safeprojectname$"/>
<add key="AssemblyName" value="$companynamespace$.$safeprojectname$"/>
<add key="namespace" value="namespace $companynamespace$.$safeprojectname$"/>
</Replacements>
</Preprocess>
の除去を観察する*.csproj
ソリューションをビルドすると、コンパイル エラーが発生します。
Name cannot begin with the '$' character, hexadecimal value 0x24. Line 10, position 6.
Ok。したがって、問題は$
それらの存在と削除であり、空白を使用するとソリューションを構築できますが、置換値が見つからないため、もちろん置換は機能しません。
ビルドはするが機能しない変更された xml。
<?xml version="1.0" encoding="utf-8" ?>
<Preprocess>
<TemplateInfo Path="CSharp\Infomedia"/>
<Replacements Include="*.*" Exclude="*.vstemplate;*.jpg;*.png;*.ico;_preprocess.xml;_project.vstemplate.xml">
<add key="ConsoleApp" value="$safeprojectname$"/>
<add key="RootNamespace" value="companynamespace.safeprojectname"/>
<add key="AssemblyName" value="companynamespace.safeprojectname"/>
<add key="namespace" value="companynamespace.safeprojectname"/>
</Replacements>
</Preprocess>
だから@Sayedここで何が起こっているのかについてあなたが考えていることを本当に願っています。