Ответ 1
И теперь я обновил мою утилиту (упомянутую выше) для поддержки создания папок решений: http://bloggingabout.net/blogs/vagif/archive/2009/12/03/utility-to-generate-solution-files-can-now-create-solution-folders.aspx
У меня много проектов, и у меня нет главного решения со всем в нем. Причина, по которой я хочу, - это рефакторинг.
Поэтому мне было интересно, знает ли кто-нибудь автоматический способ создания файла решения. Вручную добавлять все проекты просто невозможно.
И теперь я обновил мою утилиту (упомянутую выше) для поддержки создания папок решений: http://bloggingabout.net/blogs/vagif/archive/2009/12/03/utility-to-generate-solution-files-can-now-create-solution-folders.aspx
Вагиф Абилов написал замечательную утилиту, которая будет генерировать файл решения из файлов проекта. Удивительно, если вы работаете для людей, которые не "верят" в файлы решений. тьфу.
GenerateSolutionFile.exe
Использование: GenerateSolutionFile/p/s [/i includeFilter] [/e excludeFilter]
Вы можете попробовать 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
В 2018 году вы можете использовать dotnet sln
для добавления проекта в существующее решение и dotnet new sln
для создания нового.
Чтобы добавить все проекты из текущей папки, используйте эти команды в PowerShell
dotnet new sln
Get-ChildItem -Recurse *.csproj | ForEach { dotnet sln add $_.FullName }
Проверьте nAnt, порт .NET Ant. Он обладает способностью делать такие вещи или строить без него.
Я программно использую текстовые манипуляции, созданные файлы решений для файлов .vcproj(но cs/vb будет работать одинаково). Нетрудно понять, как это сделать, если вы откроете файл решения в блокноте или что-то еще.
К сожалению, я не могу предоставить код, поскольку он является собственностью.
Создайте пустое решение, а затем перетащите все его проекты сразу.