【发布时间】:2017-10-03 15:10:39
【问题描述】:
在处理具有“非标准”构建的解决方案时,在包管理器控制台中输入的实体框架命令(如 Add-Migration 和 Update-Database)可能会变得相当长且复杂。
使用如下语法和选项:
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 命令,并应用了当前项目的所有其他标准选项和开关。
有没有更简单的方法来管理这些类型的复杂命令,使它们更容易在每个项目/解决方案级别上保存和运行?
【问题讨论】:
-
用
Set-Alias怎么样? -
@DavidG 这是否允许我扩展命令以包含最初未指定的参数?我在文档中看不到任何看起来像的东西。另外,我将如何运行该命令来创建别名?我每次打开解决方案时都不必手动输入
Set-Alias ..blah blah吗?是否有一些等效于我可以放置在解决方案中的“启动”脚本在打开时运行? -
与使用 Set-Alias 类似,但如果您将命令添加到 NuGet_profile.ps1,则可以将一些更深入的逻辑写入您的命令。这个链接有一些例子可以给你一些启发。 pongit.be/productivity/package-manager-console-ef-migrations
-
@BradleyUffner 那将是一个好主意,遗憾的是我不知道如何做到这一点。似乎您应该能够将 .ps1 脚本添加到您的解决方案中,并让 nuget 包管理器使用相对路径在加载时运行 Import-Module。实际上,这可能值得提出一个新问题。
-
看起来配置文件脚本是在当前目录设置为当前解决方案的目录的情况下运行的,所以我可以让我的配置文件搜索类似“pmc.startup.ps1”的内容并在以下情况下执行它找到了。
标签: c# entity-framework nuget