gpt4 book ai didi

c# - 以编程方式将现有项目添加到新的 VS2012 解决方案失败

转载 作者:太空宇宙 更新时间:2023-11-03 16:28:29 25 4
gpt4 key购买 nike

我们在向导中使用以下代码将现有项目添加到新解决方案:

//generating files
if (dte.Solution.Projects.Count < 1) // Solution is empty or doesn't exist
{
dte.Solution.Create(oneFolderHigher(Params.OutputDir, solutionName),
solutionFileName(solutionName));
}

// adding created project to solution
dte.Solution.AddFromFile(Path.Combine(Params.ProjectRootFolder,
Params.ProjectName + ".csproj"));

它在 MS Visual Studio 2010 下运行良好,但在 2012 下失败(我尝试了第二个参数):

System.Runtime.InteropServices.COMException (0x80004004): Operation aborted (Exception from HRESULT: 0x80004004 (E_ABORT)) at EnvDTE.SolutionClass.AddFromFile(String FileName, Boolean Exclusive) at Wizard.Generator.NewProjectGenerator.Generate(Action`1 logMessage) at Wizard.Forms.WizardForm.Finish()

出现此错误后,我将新项目手动添加到解决方案中,一切正常。但我们不能只是说,“抱歉,我们无法为您添加新生成的项目,请您自行添加。”

MSDN 建议:

You can use the LaunchWizard method rather than AddFromFile to execute a wizard if you want to suppress its UI during execution. LaunchWizard has a parameter that allows you to disable the UI.

但是这个方法需要一些向导文件,所以不能解决。

有人可以帮忙吗?向导正在从“新建 -> 项目”菜单运行。

最佳答案

这里是问题的解决方法(由我的老板提议):

Before adding the project to solution, project file should be converted to
VS2012 format.

但是代码有点难看:

using (StreamReader sr = new StreamReader(newFile))
using (StreamWriter sw = new StreamWriter(projectFile, false, Encoding.UTF8))
{
while (sr.Peek() >= 0)
{
string s = sr.ReadLine();
if (s.Contains("<Project ToolsVersion=\"4.0\""))
{
s = s + Environment.NewLine + importProject;
}
... and so on

也许有人知道如何做到这一点真棒?我的意思是转换。我会让这个问题有一段时间没有答案。等待您的评论。

关于c# - 以编程方式将现有项目添加到新的 VS2012 解决方案失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11647869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com