【问题标题】:How do I manually add Solution folders to a .sln file?如何手动将解决方案文件夹添加到 .sln 文件?
【发布时间】:2017-01-03 17:12:00
【问题描述】:

假设我有一个结构如下的解决方案:

|__TopLevelFolder
     |___ModuleFolder
         |____ProjectFile
         |____TestProjectFile

我想在“TopLevel”下创建另一个“ModuleFolder”并添加其对应的项目和测试项目文件。但是,出于我的目的,我必须手动修改 .sln 文件以添加它们(我将其作为 yeoman 生成器的一部分进行,这意味着我无法像往常一样在 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 生成器,我应该以不同的方式这样做)的任何想法?

谢谢!!

【问题讨论】:

    标签: c# asp.net yeoman solution sln-file


    【解决方案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?

    【讨论】:

    • 你说得对。我将它设置为 csproj guid 而不是文件夹的 guid(或者至少我是这样理解的)。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-14
    • 2018-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多