gpt4 book ai didi

c# - 管理项目中 Entity Framework 的包管理器控制台命令

转载 作者:行者123 更新时间:2023-11-30 17:32:31 24 4
gpt4 key购买 nike

在处理具有“非标准”构建。

语法和选项如下:

Add-Migration [-Name] <String> [-Force] [-ProjectName <String>] [-StartUpProjectName <String>] 
[-ConfigurationTypeName <String>] [-ConnectionStringName <String>] [-IgnoreChanges]
[-AppDomainBaseDirectory <String>] [<CommonParameters>]

Add-Migration [-Name] <String> [-Force] [-ProjectName <String>] [-StartUpProjectName <String>]
[-ConfigurationTypeName <String>] -ConnectionString <String> -ConnectionProviderName <String>
[-IgnoreChanges] [-AppDomainBaseDirectory <String>] [<CommonParameters>]

Update-Database [-SourceMigration <String>] [-TargetMigration <String>] [-Script] [-Force]
[-ProjectName <String>] [-StartUpProjectName <String>] [-ConfigurationTypeName <String>]
[-ConnectionStringName <String>] [-AppDomainBaseDirectory <String>] [<CommonParameters>]

Update-Database [-SourceMigration <String>] [-TargetMigration <String>] [-Script] [-Force]
[-ProjectName <String>] [-StartUpProjectName <String>] [-ConfigurationTypeName <String>]
-ConnectionString <String> -ConnectionProviderName <String>
[-AppDomainBaseDirectory <String>] [<CommonParameters>]

在项目中是否有任何好的选项来管理这些命令?我经常发现自己创建了一个带有注释和保存的命令行的 .txt 文件,并将其保存在解决方案级别的“doc”文件夹中。我根据需要从这里复制和粘贴命令,但似乎应该有更好的方法来处理这些命令。

理想情况下,我希望能够为包管理器控制台创建一个“批处理文件”(或类似的文件),它可以采用简化的选项并将其扩展为完整的命令。例如,我运行 Add-Migration-Ex MyNewMigration,它会扩展为完整的 Add-Migration 命令,以及当前项目的所有其他标准选项和开关应用。

是否有任何更简单的方法来管理这些类型的复杂命令,使它们更容易在每个项目/解决方案级别上保存和运行?

最佳答案

经过大量研究,我发现 NuGet 有一个系统可以在解决方案加载时运行 power-shell 脚本。 Nuget 将在包的“tools”目录中查找名为“init.ps1”的脚本,并在加载解决方案时执行它。我将利用它,并创建一个在解决方案加载时运行的 NuGet 包,它将检查解决方案中名为“SolutionCommands”的目录。然后它将运行任何脚本,并安装位于该目录中的任何模块。这些脚本可以作为 Visual Studio 中解决方案的一部分进行管理,通过版本控制跟踪解决方案,并自动分发给团队中的所有开发人员。

我已经创建了初步的 package现在可以在 Nuget 上为任何想要此功能的其他人提供。还没有真正测试过,脚本需要签名(或者放宽计算机的安全策略)才能运行。


初始化.ps1:

$oldLocation = Get-Location

$oldWarningPref = $WarningPreference
$WarningPreference = 'SilentlyContinue'

$commandDirectory = ".\SolutionCommands"

If(Test-Path $commandDirectory)
{
Write-Host "Installing Modules..."
Get-ChildItem $commandDirectory -Filter "*.psm1" |
ForEach-Object {
$fullPath = Join-Path -Path $commandDirectory -ChildPath $_.Name
$fileName = Split-Path -Path $fullPath -Leaf
$fileNameNoExtension = [System.IO.Path]::GetFileNameWithoutExtension($fullPath)

if (Get-Module | ?{ $_.Name -eq $fileNameNoExtension })
{
Remove-Module $fileNameNoExtension
}
Import-Module ($fullPath)

Write-Host "Loaded module: " $fullPath
Write-Host " Commands: " (Get-Command -Module $fileNameNoExtension)
Write-Host
}

Write-Host "Executing Scripts..."
Get-ChildItem $commandDirectory -Filter "*.ps1" |
ForEach-Object {
$fullPath = Join-Path -Path $commandDirectory -ChildPath $_.Name
Write-Host $fullPath
. $fullPath
}
}

Set-Location $oldLocation
$WarningPref = $oldWarningPref

关于c# - 管理项目中 Entity Framework 的包管理器控制台命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46547865/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com