C# 动态创建项目
我希望在解决方案中动态创建项目 C#代码C# 动态创建项目,c#,C#,我希望在解决方案中动态创建项目 C#代码 protected void Page_Load(object sender, EventArgs e) { string projectPath = @"C:\Users\lucas_000\Documents\Visual Studio 2010\Projects\ModelingProject1\ModelingProject1\ModelingProject1.modelproj";
protected void Page_Load(object sender, EventArgs e)
{
string projectPath = @"C:\Users\lucas_000\Documents\Visual Studio 2010\Projects\ModelingProject1\ModelingProject1\ModelingProject1.modelproj";
using (IModelingProjectReader projectReader = ModelingProject.LoadReadOnly(projectPath))
{
IModelStore store = projectReader.Store;
foreach (IClass umlClass in store.AllInstances<IClass>())
{
try
{
Engine engine = new Engine();
//engine.BinPath = RuntimeEnvironment.GetRuntimeDirectory();
Project project = engine.CreateNewProject();
project.AddNewImport(@"$(MSBuildBinPath)\Microsoft.CSharp.targets", null);
BuildPropertyGroup props = project.AddNewPropertyGroup(false);
props.AddNewProperty("AssemblyName", "myassembly");
props.AddNewProperty("OutputType", "Library");
BuildItemGroup items = project.AddNewItemGroup();
items.AddNewItem("Reference", "Some.Assembly");
items.AddNewItem("Compile", "somefile.cs");
project.Save("myproject.csproj");
}
catch (Exception e2)
{
}
}
}
}
受保护的无效页面加载(对象发送方,事件参数e)
{
字符串projectPath=@“C:\Users\lucas\u 000\Documents\Visual Studio 2010\Projects\ModelingProject1\ModelingProject1\ModelingProject1.modelproj”;
使用(IModelingProjectReader-projectReader=ModelingProject.LoadReadOnly(projectPath))
{
IModelStore store=projectReader.store;
foreach(IClass umlClass in store.AllInstances())
{
尝试
{
发动机=新发动机();
//engine.BinPath=RuntimeEnvironment.GetRuntimeDirectory();
Project=engine.CreateNewProject();
project.AddNewImport(@“$(MSBuildBinPath)\Microsoft.CSharp.targets”,null);
BuildPropertyGroup props=project.AddNewPropertyGroup(false);
props.AddNewProperty(“AssemblyName”、“myassembly”);
props.AddNewProperty(“输出类型”、“库”);
BuildItemGroup items=project.AddNewItemGroup();
items.AddNewItem(“参考”、“某些组件”);
items.AddNewItem(“Compile”,“somefile.cs”);
project.Save(“myproject.csproj”);
}
捕获(异常e2)
{
}
}
}
}
问题
当我将保存项目时,在我不想保存此新项目的文件夹中出现UnauthorizedAccessException
如何在Visual Studio 2010的当前解决方案中创建此项目
更新
行project.Save(“myproject.csproj”)
试图保存在C:\Program Files\Common Files\Microsoft Shared\DevServer\10.0\myproject.csproj
我的所有解决方案都在
C:\Users\lucas\u 000\Documents\visualstudio 2010\Projects
中,可能是这样的:使用(IModelingProjectReader projectReader=ModelingProject.LoadReadOnly(projectPath))。。。您似乎正在加载“只读”项目。这一行我正在加载一个UML模型,project.Save()
中的这一行试图将新项目保存在CommonFiles
文件夹中,这很奇怪,因为我所有的解决方案都保存在我的Documents
文件夹中的VisualStudio文件夹中。我用更多信息更新了我的问题始终避免依赖当前目录设置正确,它肯定不会在VS中。指定完整路径c:\foo\bar\baz.txt,而不仅仅是baz.txt。就像您对projectPath所做的一样。您正在尝试从VS或其他exe中执行此操作吗?如果您在VS中执行此操作,我强烈建议您使用DTE
,而不是当前的方法。()