Простой способ добавить несколько существующих .csproj в решение Visual Studio?

Вы можете создать объект-обертку для своей структуры с помощью access / get accessors, который позволит вам перебирать строковые значения для заполнения / чтения базовой структуры, которая является статической.

35
задан p.campbell 11 December 2009 в 23:36
поделиться

5 ответов

Вы могли бы написать небольшой сценарий PowerShell или приложение .NET, которое анализирует XML .csproj всех проектов и извлекает их данные (ProjectGuid и т. Д.), А затем добавляет их в файл .sln. . Было бы быстрее и менее рискованно добавлять их все вручную, но, тем не менее, это интересная задача.

4
ответ дан 27 November 2019 в 07:10
поделиться

, если вы откроете файл sln с помощью блокнота, вы увидите формат файла, который легко понять, но для получения дополнительной информации посмотрите @ Взломайте файлы проектов и решений . Понимая структуру файлов решений, вы можете написать приложение, которое откроет все файлы проекта и запишет имя приложения, адрес и GUID в файл sln.

Конечно, я думаю, если это только один раз, вам лучше сделать это вручную

1
ответ дан 27 November 2019 в 07:10
поделиться

Зависит от версии Visual Studio.
Но название этого процесса - «Автоматизация и расширяемость для Visual Studio»
http://msdn.microsoft.com/en-us/library/t51cz75w.aspx

0
ответ дан 27 November 2019 в 07:10
поделиться

Примечание: Это только для Visual Studio 2010

Найдено здесь - отличное дополнение для Visual Studio 2010, которое предоставляет вам консоль PowerShell в VS, позволяющую вам взаимодействовать с IDE. . Помимо многих других вещей, которые вы можете сделать, используя встроенную расширяемость VS, как упомянул @Avram, было бы довольно легко добавлять файлы или проекты в решение.

3
ответ дан 27 November 2019 в 07:10
поделиться

Реализация PowerShell, которая рекурсивно сканирует каталог сценария на наличие файлов .csproj и добавляет их в (сгенерированный) All.sln:

$scriptDirectory = (Get-Item $MyInvocation.MyCommand.Path).Directory.FullName
$dteObj = [System.Activator]::CreateInstance([System.Type]::GetTypeFromProgId("VisualStudio.DTE.12.0"))

$slnDir = ".\"
$slnName = "All"

$dteObj.Solution.Create($scriptDirectory, $slnName)
(ls . -Recurse *.csproj) | % { $dteObj.Solution.AddFromFile($_.FullName, $false) }

$dteObj.Solution.SaveAs( (Join-Path $scriptDirectory 'All.sln') ) 

$dteObj.Quit()
22
ответ дан 27 November 2019 в 07:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: