Как лучше всего писать в BundleConfig из Nuget

Я создаю пакет Nuget для других разработчиков в моей команде и уплотняю стили с помощью SASS.

Пакет упакован с соответствующими зависимостями для использования SASS и отлично устанавливается в новом проекте MVC4.

Мой вопрос заключается в том, что пакет Nuget должен внести определенные изменения в BundleConfig в App_Start, но я не уверен, что это лучший способ автоматизировать этот процесс.

Я пытаюсь использовать подход install.ps1 для внесения изменений в файл конфигурации пакета, но я не уверен, что это лучший подход.

Я хочу, чтобы в конечном результате члены моей команды не прилагали никаких усилий для применения Nuget к решению и не должны были вносить какие-либо изменения в BundleConfig.

Пожалуйста, дайте мне знать, каков наилучший план для реализации чего-то подобного.

Необходимо будет установить пространство имен для файла BundleConfig, получить конфигурации по умолчанию и заменить их новыми операторами конфигурации как для стилей, так и для сценариев.

Замена будет шаблонной, поэтому я смогу включить в свой пакет nuget файл с предполагаемыми изменениями, открыть существующую конфигурацию пакета и сбросить свои изменения.

Я мало что знаю о powershell, но если бы вы могли указать мне на статью, это было бы здорово!

param($installPath, $toolsPath, $package, $project)
$app_start = $project.ProjectItems | Where-Object { $_.Name -eq "App_Start" }
$app_start.GetType().FullName | out-file "C:\Code\Test2.txt" -append
$app_start | Get-Member | out-file "C:\Code\Test2.txt" -append
$files = $app_start.ProjectItems
foreach($file in $files)
{$file.Name | out-file "C:\Code\Test2.txt" -append }

Это моя текущая попытка добраться до файла BundleConfig.cs.

Я могу перечислить ProjectItems, но я не уверен, как открыть папку App_Start, чтобы получить файл BundleConfig.cs. Любая помощь приветствуется.


person jetstreamin    schedule 15.05.2013    source источник


Ответы (1)


В итоге я сделал следующее:

param($installPath, $toolsPath, $package, $project)

$prjFileNameAndPath = $project.FileName
$arrFileNameAndPath = $prjFileNameAndPath.Split("\")
$pathLength = $arrFileNameAndPath.count - 1
$partToTrim = $arrFileNameAndPath[$arrFileNameAndPath.count - 1]

$index = 0
$destPath = ""
foreach($node in $arrFileNameAndPath)
{
   $index++
   if($index -le $pathLength) {
        $destPath += $node + "\"
   }
}

$destPath += "App_Start\BundleConfig.cs"
$destPath | out-file "C:\Code\Test.txt" -append

$content = Get-Content $destPath
$content | out-file "C:\Code\Test2.txt" -append

function Update-Text {
    [CmdletBinding()]
    Param (
    [Parameter(Position=0, Mandatory=$true, ValueFromPipeline=$true)]
    [System.String]
    $FilePath,

    [Parameter(Position=1, Mandatory=$true, ValueFromPipeline=$false)]
    [System.String]
    $MatchPattern,

    [Parameter(Position=2, Mandatory=$true, ValueFromPipeline=$false)]
    [System.String]
    $ReplacementPattern
)

BEGIN {
}

PROCESS {
    Write-Verbose "Replacing Content in $FilePath"
    Write-Verbose "Match pattern: $MatchPattern"
    Write-Verbose "Replace pattern: $ReplacementPattern"

    (Get-Content $FilePath) | % {$_ -replace $MatchPattern, $ReplacementPattern    } | Set-Content $FilePath
}
}

Это привело меня к тому, что я смог получить содержимое для файла. Я планирую использовать регулярное выражение для замены текста.

Мне пришлось в основном построить путь к файлу на основе свойства Project FileName, затем обрезать имя файла csproj и добавить App_Start\BundleConfig.cs к пути.

Это не красиво, но это будет работать для того, что нам нужно на моей работе. Надеюсь, это поможет кому-то. Если кто-нибудь знает более простой способ изменить содержимое файла из скрипта nuget install powershell, пожалуйста, откликнитесь. Удачного кодирования и да пребудет с вами сила всегда!

person jetstreamin    schedule 16.05.2013
comment
Ух ты. Ничего, кроме сверчков на этот вопрос? - person bkwdesign; 15.01.2019
comment
Я тоже ищу примеры. Спасибо за публикацию этого ответа по крайней мере. FWIW — вот документация Microsoft по установке/удалению файлов powershell NuGet - person bkwdesign; 15.01.2019