我爲.net核心應用程序創建了一個visual studio項目模板。使用此模板創建新項目時,我希望能夠在Azure身份驗證和身份驗證之間進行選擇。爲了達到這個目的,我創建了一個嚮導。根據嚮導上選定的選項,項目中必須包含一些附加文件。我的問題是,我不知道如何將這些額外的文件添加到我的項目。如何以編程方式將文件添加到Visual Studio模板?
1日法
起初,我創建了一個項目模板,並試圖把它的內容添加到我的項目。
AzureAuthentication.vstemplate
<VSTemplate>
<TemplateData>
<!-- code removed for clarity -->
</TemplateData>
<TemplateContent>
<Folder Name="Models" TargetFolderName="Models">
<ProjectItem ReplaceParameters="true" TargetFileName="RefreshTokenResponse.cs">RefreshTokenResponse.cs</ProjectItem>
</Folder>
<Folder Name="Controllers" TargetFolderName="Controllers">
<ProjectItem ReplaceParameters="true" TargetFileName="UserController.cs">UserController.cs</ProjectItem>
</Folder>
</TemplateContent>
</VSTemplate>
WizardImplementation.cs
public class WizardImplementation : IWizard {
public void RunStarted(object automationObject, Dictionary<string, string> replacementsDictionary, WizardRunKind runKind, object[] customParams) {
dte = automationObject as DTE;
// code removed for clarity
}
public void ProjectFinishedGenerating(Project project) {
switch (authenticationType) {
default: break;
case AuthenticationType.Azure: {
// code removed for clarity
using (StreamWriter writer = File.CreateText("C:/Users/pasjiannis.OFFICE/Desktop/log.txt")) {
dte.Solution.AddFromTemplate(templatePath, projectPath, "AzureAuthentication");
}
break;
}
case AuthenticationType.Identity: {
break;
}
}
}
這種方法不會在所有的工作。
第二個方法
然後我轉換從項目模板到項目模板我的模板。
AzureAuthentication.vstemplate
<VSTemplate>
<TemplateData>
<!-- code removed for clarity -->
</TemplateData>
<TemplateContent>
<Project File="AzureAuthentication.csproj" ReplaceParameters="true">
<Folder Name="Models" TargetFolderName="Models">
<ProjectItem ReplaceParameters="true" TargetFileName="RefreshTokenResponse.cs">RefreshTokenResponse.cs</ProjectItem>
</Folder>
<Folder Name="Controllers" TargetFolderName="Controllers">
<ProjectItem ReplaceParameters="true" TargetFileName="UserController.cs">UserController.cs</ProjectItem>
</Folder>
</Project>
</TemplateContent>
</VSTemplate>
這部分工作。這些文件已成功添加到我的項目中,但我的解決方案中也創建了另一個項目。
3方法
而是在我WizardImplementation類使用AddFromTemplate的方法,我試圖訪問我的項目,得到了其項目項,並添加新的項目有這樣
dte.Solution.Projects.Items(0).ProjectItems.AddFromFile("UserController.cs");
但是我的項目上的ProjectItems爲null。
我在這裏錯過了什麼?我的任何方法是否正確或者是否有更好的方法來實現這個目標?