从 CSProj 列表生成解决方案文件

问题描述 投票:0回答:8

我有很多项目,但我没有包含所有内容的主解决方案。我想要一个的原因是为了重构。

所以我想知道是否有人知道构建解决方案文件的自动方法。手动添加所有项目是不可行的。

c# visual-studio-2008
8个回答
16
投票

在 2018 年,您可以使用

dotnet sln
命令将项目添加到现有解决方案,并使用
dotnet new sln
创建新项目。

要从当前文件夹添加所有项目,请在 PowerShell 中使用这些命令

dotnet new sln
Get-ChildItem -Recurse *.csproj | ForEach { dotnet sln add $_.FullName }

8
投票

现在我已经更新了我的实用程序(如上所述)以支持创建解决方案文件夹: http://bloggingabout.net/blogs/vagif/archive/2009/12/03/utility-to-generate-solution-files-can-now-create-solution-folders.aspx


2
投票

你可以试试这个(下面的代码来自这个网站,所有网站..)

但是如果它不起作用并且调试会花费太多时间,我会建议去手动添加一次。放一些好听的音乐就可以了... :)

@oefe 我认为 VS.NET 不允许您将 D&D 项目转化为解决方案,我已经尝试过一次。

Imports EnvDTE
Imports EnvDTE80
-----------------------------------------------------------------------------------
    Private Shared Sub DoStuff()

        Dim filePath As String = "c:\temp"

        Dim fileName As String = "bld_TestApp.sln"

        Dim fullName As String = Path.Combine(filePath, fileName)

        Dim objType As Type

        Dim objDTE As EnvDTE.DTE

        objType = Type.GetTypeFromProgID("VisualStudio.DTE.8.0")

        objDTE = DirectCast(System.Activator.CreateInstance(objType), EnvDTE.DTE)

        Console.WriteLine(objDTE.Name + ":" + objDTE.Version)


        objDTE.Solution.Create(filePath, fileName)

        objDTE.Solution.AddFromFile("C:\Common.vbproj")

        objDTE.Solution.SaveAs(fullName)


    End Sub

2
投票

Vagif Abilov 编写了一个很棒的实用程序,可以从项目文件生成解决方案文件。如果您为那些不“相信”解决方案文件的人工作,那将是一件令人惊奇的事情。呃

生成解决方案文件.exe

用法:GenerateSolutionFile /p /s [/i includeFilter] [/e excludeFilter]

博客已被删除,它包含一个带有代码的 zip: https://web.archive.org/web/20090810131702/http://bloggingabout.net/blogs/vagif/archive/2009/08/04/utility-to-generate-visual-studio-solution-file-for -一组项目.aspx

貌似作者在这里上传了这个工具的msi版本: https://marketplace.visualstudio.com/items?itemName=VagifAbilov.SolutionMaker

据我所知,Microsoft slngen 可能是更好的解决方案,因为它是 MIT 许可的源代码,并且是一个活跃的项目。 https://github.com/microsoft/slngen


1
投票

看起来在 2017 年,Microsoft 构建了另一个工具来生成解决方案:https://github.com/microsoft/slngen - 这个项目似乎正在积极维护。


-2
投票

我已经以编程方式使用文本操作为 .vcproj 文件创建了解决方案文件(但 cs/vb 的工作方式是一样的)。如果您在记事本或其他任何工具中打开解决方案文件,就不难弄清楚如何去做。

不幸的是,我无法提供代码,因为它是专有的。


-3
投票

创建一个空的解决方案,然后一次将所有项目拖放到其中?


-3
投票

查看 nAnt,Ant 的 .NET 端口。它有能力做这样的事情,或者没有它就可以构建。

© www.soinside.com 2019 - 2024. All rights reserved.