c# - 在哪里可以找到 FluentMigrator 类?
问题描述
所以我有我计划上传到 Azure 网站的 web 应用程序,我有我的 Project.Model.csproj 使用 NH 和我的 Project.Model.Migrations.csproj 使用 FluentMigrator。
当尝试使用 Kudu 运行部署时,我发现我的 Migrations.csproj 没有被编译,因为它不是 web.csproj 的引用树的一部分(我猜这是正确的做法)。
因此,我立即尝试修改我的 deploy.cmd,以便为该 Migrations.csproj 启动 msbuild。但是,我发现它可能会导致其他问题,尤其是 KuduSync,因为我在通常的 kudu 逻辑的“主流”之外进行编译。
我的问题是:拥有 Model.csproj 和 Migrations.csproj 是否正确?基于维护和秩序是合乎逻辑的,但它属于这类问题。
如果可以分开,那么如何更改 kudu 脚本以在大多数情况下正常工作?
这是脚本(为简洁而缩短)。
:: 2. Build to the temporary path
IF /I "%IN_PLACE_DEPLOYMENT%" NEQ "1" (
call :ExecuteCmd "%MSBUILD_PATH%" "%DEPLOYMENT_SOURCE%\Code\web.csproj" /nologo /verbosity:m /t:Build /t:pipelinePreDeployCopyAllFilesToOneFolder /p:_PackageTempDir="%DEPLOYMENT_TEMP%"; ...
) ELSE (
call :ExecuteCmd "%MSBUILD_PATH%" "%DEPLOYMENT_SOURCE%\Code\web.csproj" /nologo /verbosity:m /t:Build /p:...
)
IF !ERRORLEVEL! NEQ 0 goto error
:: 2.1 Build the migration project because they are not in the official dependencies of the web application
call :ExecuteCmd "%MSBUILD_PATH%" "%DEPLOYMENT_SOURCE%\Code\mig.csproj" /nologo /verbosity:m /t:Build /p:Configuration=Release
IF !ERRORLEVEL! NEQ 0 goto error
:: 3. KuduSync
IF /I "%IN_PLACE_DEPLOYMENT%" NEQ "1" (
call :ExecuteCmd "%KUDU_SYNC_CMD%" -v 50 -f "%DEPLOYMENT_TEMP%" -t "%DEPLOYMENT_TARGET%" -n "%NEXT_MANIFEST_PATH%" -p "%PREVIOUS_MANIFEST_PATH%" -i ".git;.hg;.deployment;deploy.cmd"
IF !ERRORLEVEL! NEQ 0 goto error
)
2.1 是我为编译 mig.csproj 添加的步骤,但是,我(尚未对其进行测试)假设 3 不会按预期工作,因为它会错过我在 2.1 步骤中生成的 dll。
解决方案
我同意,将模型与迁移分开是有道理的。但是你也应该分开部署。在您的情况下,我将有两个构建(1 个用于 Web 应用程序,1 个用于迁移),它们会将两个(构建)工件推送到放置位置。然后我将有两个发布定义,第一个将针对您的 sql 连接字符串运行 fluent 迁移器程序集以更新数据库。第二个将更新网络应用程序。
我喜欢在这种情况下使用Visual Studio Team Services (VSTS)。
推荐阅读
- c# - 缓冲后的反应式过滤器、拆分和延迟
- neo4j - 子查询中的 Neo4j“变量未定义”错误 - 看不到外部变量
- c# - PasswordBox 左右边框缺失
- python - 如何将字符串分配给空字符串变量
- python - 如何将链接器标志传递给 f2py?
- mysql - 错误代码:1172。结果包含多于一行错误
- python - 在众多的 Python 文件复制函数中,如果复制被中断,哪些是安全的?
- sql - 月份和年份的 SQL 查询
- docker - cloudbuild.yaml 上的错误:(gcloud.builds.submit)将 cloudbuild.yaml 解释为构建配置:“列表”对象没有属性“项目”
- powershell - 使用不同的凭据连接到网络共享