【发布时间】:2014-02-25 06:05:34
【问题描述】:
我正在使用 .NET Framework 4.0 在 Visual Studio 2012 中创建代码生成工具(基于表结构的自动代码生成)作为 Windows 窗体应用程序。它正在生成可移植对象、控制器、WCF 服务和业务逻辑代码文件。
所有代码文件捆绑在适当的项目中,所有项目捆绑在一个解决方案中。解决方案和项目需要通过程序动态创建。
我尝试使用 Visual Studio 插件项目创建解决方案和项目。它在加载项项目(单独的解决方案)中运行良好。 OnConnection 方法在Add-in 项目中自动调用。现在我想在我的代码生成工具中实现它。在Add-In 中调试时,application 变量显示为COM object。
我试图从代码生成工具传递OnConnection 方法的值,它会引发错误(我为application 变量传递了this 对象)。我真的不知道如何从我的代码生成工具中调用这个方法。有人帮忙吗?
代码
private DTE2 _applicationObject;
private AddIn _addInInstance;
public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom)
{
_applicationObject = (DTE2)application;
_addInInstance = (AddIn)addInInst;
createProjectsFromTemplates(_applicationObject);
}
public void createProjectsFromTemplates(DTE2 dte)
{
try
{
Solution2 soln = (Solution2)dte.Solution;
string csTemplatePath;
string csPrjPath = "SamplePath\\TestCreateProject";
csTemplatePath = soln.GetProjectTemplate("WpfApplication.zip", "CSharp");
System.Windows.Forms.MessageBox.Show("C# template path: " + csTemplatePath);
soln.AddFromTemplate(csTemplatePath, csPrjPath, "NewWCFCSharpAutoGeneratorProject", false);
Project prj;
ProjectItem prjItem;
String itemPath;
// Point to the first project (the Visual Basic project).
prj = soln.Projects.Item(1);
prjItem = prj.ProjectItems.AddFromFileCopy("SampelCSharp.cs");
}
catch (System.Exception ex)
{
System.Windows.Forms.MessageBox.Show("ERROR: " + ex.Message);
}
}
【问题讨论】:
-
我认为您的问题是重复的,除了您想从中调用加载项的应用程序类型的差异。我在那里留下了评论。 Use Addin project in another application.
-
不是专门回答这个问题,但可能有用:stackoverflow.com/questions/414309/…
标签: c# winforms visual-studio-2010 visual-studio-2013 visual-studio-addins