Saya membuat template untuk proyek VS di mana saya ingin mengatur beberapa atribut yang disediakan oleh pengguna. Jadi saya menerapkan IWizard
-antarmuka:
public void RunStarted(object automationObject, Dictionary<string, string> replacementsDictionary, WizardRunKind runKind, object[] customParams)
{
string projectPath = replacementsDictionary["$destinationdirectory$"];
string projectName = replacementsDictionary["$projectname$"];
SchemaWizardForm frm = new SchemaWizardForm(projectPath, projectName);
frm.ShowDialog();
this.m_assemblyInfo = frm.AssemblyInfo;
replacementsDictionary["$assemblyTitle$"] = frm.AssemblyInfo.AssemblyName;
replacementsDictionary["$assemblyName$"] = frm.AssemblyInfo.AssemblyName;
replacementsDictionary["$copyrightYear$"] = DateTime.Now.Month + "/" + DateTime.Now.Year;
replacementsDictionary["$defaultNamespace$"] = frm.AssemblyInfo.RootNamespace;
}
Sekarang di dalam file proyek template saya, saya memiliki sesuatu seperti ini:
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>$defaultNamespace$</RootNamespace>
<AssemblyName>$assemblyName$</AssemblyName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
</Project>
Dan di AssemblyInfo.cs
:
[assembly: AssemblyTitle("$assemblyTitle$")]
[assembly: AssemblyCopyright("(C) $copyrightYear$ MyCompany")]
// ...
Saya berhasil membuat proyek saya menggunakan wizard. Tanggal hak ciptanya dari AssemblyInfo.cs
setelah generasi adalah [assembly: AssemblyCopyright("(C) 8/2016 MyCompany")]
- itu bagus. Namun RootNamespace
memiliki nilai yang mirip dengan projectsname
. Saya sudah men-debug kode di atas, di mana replacementsDictionary
tidak memiliki entri yang benar untuk namespace (lihat gambar di bawah).
Inilah hasil proyeknya
Seperti yang Anda lihat, Assembly Name
dan Default namespace
berisi nilai dari projectsname
alih-alih apa yang saya masukkan di formulir pengguna (asdas
dalam kasus saya). Namun tanggal hak cipta yang dapat diakses melalui tombol Assembly Information
di Proyek-->Propertes-->Aplikasi diatur dengan benar (tidak ditampilkan dalam gambar).
Apakah mungkin mengubah tema properti proyek sendiri menggunakan replacementDictionary
?