我正在编写一个带有envdte / envdte80的envdte80控制台应用程序(两者都没有经验),以便在一个新的Visual实例中打开一个项目。在这个新实例中,我试图通过控制台应用程序更改Project.StartOptions。
当我试图加载ConfigurationManager时,我收到了这个异常:"System.InvalidOperationException",“操作由于对象的当前状态而无效”。
我的守则:
using EnvDTE;
using EnvDTE80;
using System;
namespace AutomationProject
{
class Program
{
static void Main(string[] args)
{
...
EnvDTE80.DTE2 dte;
object obj = null;
System.Type t = System.Type.GetTypeFromProgID("VisualStudio.DTE.14.0", true);
System.Threading.Thread.Sleep(1000);
// Attempt to create an instance of envDTE.
obj = System.Activator.CreateInstance(t, true);
// Cast to DTE2.
dte = (EnvDTE80.DTE2)obj;
dte.MainWindow.Visible = true;
//dte.MainWindow.Activate();
//dte.UserControl = true;
dte.ExecuteCommand("File.OpenProject", projectLocation + projectName);
//dte.ExecuteCommand("Project.StartOptions", "-break -lib:ModuleName -exec:TestName");
// Get a reference to the solution2 object.
System.Threading.Thread.Sleep(1000);
Solution2 soln = (Solution2)dte.Solution;
Project proj = soln.Projects.Item(1);
try
{
dte.Solution.SolutionBuild.SolutionConfigurations.Item(1).Activate();
ConfigurationManager configmgr;
Configuration config;
if (dte.Solution.Projects.Count > 0)
{
configmgr = dte.Solution.Projects.Item(1).ConfigurationManager;
config = proj.ConfigurationManager.ActiveConfiguration;
config.Properties.Item("StartArguments").Value = "command line arguments";
...
}
...
}
...
}
}
}发布于 2017-04-05 14:14:49
解决了
项目是一个可执行文件,这就是它不能初始化ConfigurationManager的原因。
https://stackoverflow.com/questions/43210682
复制相似问题