我正在为团队中的其他开发人员创建一个Nuget包,并且正在使用SASS压缩样式。

该程序包包含使用SASS的适当依赖关系,并且可以在新的MVC4项目上很好地安装。

我的问题是,需要通过Nuget软件包对App_Start中的BundleConfig进行某些更改,但是我不确定实现此过程自动化的最佳方法。

我正在尝试使用install.ps1方法将更改添加到捆绑包配置文件中,但是我不确定这是否是最佳方法。

我希望最终结果是团队成员将Nuget应用于解决方案而无需对BundleConfig进行任何编辑的情况下为零工作。

请让我知道使这种事情发生的最佳计划是什么。

它将需要设置BundleConfig文件的名称空间以获得默认配置,并用样式和脚本的新config语句替换它们。

替代品将是样板的东西,因此我应该能够在nuget包中包含一个具有预期更改的文件,打开现有的bundle配置并转储我的更改。

我几乎不了解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文件。任何帮助是极大的赞赏。

最佳答案

我最终做了以下工作:

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脚本更改文件内容的简便方法,请加入。快乐的编码,愿力量永远与您同在!

关于asp.net-mvc-4 - 如何最好地从Nuget写入BundleConfig,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16567591/

10-11 01:23