Сгенерировать файл решения из списка CSProj

У меня много проектов, и у меня нет главного решения со всем в нем. Причина, по которой я хочу, - это рефакторинг.

Поэтому мне было интересно, знает ли кто-нибудь автоматический способ создания файла решения. Вручную добавлять все проекты просто невозможно.

Ответ 2

Вагиф Абилов написал замечательную утилиту, которая будет генерировать файл решения из файлов проекта. Удивительно, если вы работаете для людей, которые не "верят" в файлы решений. тьфу.

GenerateSolutionFile.exe

Использование: GenerateSolutionFile/p/s [/i includeFilter] [/e excludeFilter]

http://bloggingabout.net/blogs/vagif/archive/2009/08/04/utility-to-generate-visual-studio-solution-file-for-a-group-of-projects.aspx

Ответ 3

Вы можете попробовать this (код приведен на этом сайте, из всех сайтов..)

Но если это не сработает, и для отладки потребуется слишком много времени, я бы посоветовал пойти с болью при добавлении их вручную один раз. Просто положите хорошую музыку и пойдите для нее...:)

@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

Ответ 4

В 2018 году вы можете использовать dotnet sln для добавления проекта в существующее решение и dotnet new sln для создания нового.

Чтобы добавить все проекты из текущей папки, используйте эти команды в PowerShell

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

Ответ 5

Проверьте nAnt, порт .NET Ant. Он обладает способностью делать такие вещи или строить без него.

Ответ 6

Я программно использую текстовые манипуляции, созданные файлы решений для файлов .vcproj(но cs/vb будет работать одинаково). Нетрудно понять, как это сделать, если вы откроете файл решения в блокноте или что-то еще.

К сожалению, я не могу предоставить код, поскольку он является собственностью.

Ответ 7

Создайте пустое решение, а затем перетащите все его проекты сразу.