2017-01-03 138 views
1

说我有一个结构化的,像这样的解决方案:如何手动将解决方案文件夹添加到.sln文件?

|__TopLevelFolder 
    |___ModuleFolder 
     |____ProjectFile 
     |____TestProjectFile 

我想创造另一个“ModuleFolder”,“顶层”下,并添加其相应的项目和测试项目文件。然而,为了我的目的,我必须手动修改.sln文件来添加它们(我这样做是作为yeoman生成器的一部分,这意味着我不能像VS一样在VS中执行此操作)。

我的问题是,当我修改.sln文件时,我的文件夹显示为不可用的项目,当我尝试重新加载它时,加载失败,并显示“无法找到项目文件或Web”。以下是我在.sln文件正在做:

首先,我添加的文件夹:

Project("{GUID}") = "NewModuleFolder", "NewModuleFolder", "{NewModuleGUID}" 
EndProject 

然后我添加实际的项目:

Project("{GUID}") = "TopLevel.NewModule.Tests", "src\TopLevel\NewModule\TopLevel.NewModule.Tests.csproj", "{TestProjectGUID}" 
EndProject 

然后在“preSolution”第一节添加哪个地方NewModuleFolder的TopLevelFolder下方的线还有TestProject的NewModuleFolder下:

GlobalSection(NestedProjects) = preSolution 
    {NewModuleGUID} = {TopLevelGUID} 
    {TestProjectGUID} = {NewModuleGUID} 
    ... 
EndGlobalSection 

这正是所有其他文件夹和项目在我的解决方案中工作的原因(相信我是双倍和三重检查以及尝试切换GUID以确保)。

任何想法如何使这项工作或我做错了什么(或不同的方式,我应该这样做考虑我创建一个yeoman发电机)?

谢谢!

回答

1

项目类型的Guid必须是“2150E333-8FDC-42A3-9474-1A3956D46DE8”,第二个guid应该只是新的guid。

Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = 
     "MyFolder", "MyFolder", "{C990590A-798B-41BB-9A2A-50D28037BA2A}" 
    ProjectSection(SolutionItems) = preProject 
     MyFolder\some.txt = PysicalPath\a.txt 
    EndProjectSection 
EndProject 

请参阅Where are Visual Studio 2013 Solution Folders?了解更多信息。

+0

你完全正确。我把它设置为csproj guid而不是文件夹(或者至少我是这么理解的)。非常感谢! – Andrew

相关问题