Service Fabric 默认发布配置文件而不是 Local.xml

2023-12-04

我们公司正在使用 Service Fabric 开发新应用程序。 我们遇到的一个常见问题是,多个开发人员使用远程服务器上的队列、数据库、存储,每个开发人员对此都有不同的配置,所有设置都存储在每个环境的 ApplicationParameters 文件中,对于本地开发,有一个 Local.5Node .xml。当我们获得这些文件的最新版本时,开发人员检查他们的凭据并覆盖其他凭据是很常见的。

我正在尝试自定义 ServiceFabric 部署脚本“Deploy-FabricApplication.ps1”以根据登录用户的 Windows 凭据使用自定义 PublishProfile。我可以实现更新部署文件,当我们使用发布进行部署时,它运行良好,但当我们点击 F5(调试)时,ServiceFabric 的默认行为似乎是使用特定的 Local.5Node.xml 应用程序参数覆盖参数。

我浏览了所有服务结构 .ps1 文件,但找不到定义它的位置。我猜这是在 .targets 文件中定义的,所以我不知道如何避免这种默认行为。

除了 Local.5Node.xml 之外,还有其他方法可以在本地开发计算机上使用自定义 PublishProfiles 吗?


实际上,我刚刚在设置一些团队特定环境时遇到了这个问题。我从以下来源借用了信息:

  • Web 配置转换
  • 用 MSBUILD 替换文件中的字符串

我根据不同团队的需要添加了多个参数文件。每一项都包含其特定的资源设置。

Visual Studio Setup

我还添加了 Local.1Node.Template.xml 和 Local.5Node.Template.xml。我什至从源代码管理中删除了 Local.1Node.xml 和 Local.5Node.xml 并将它们设置为忽略,同时将它们保留在项目中,以便 Visual Studio 不会认为它们真正丢失。 1Node(5Node除了将1Node替换为5Node外其他都是一样的)内容如下:

<?xml version="1.0" encoding="utf-8"?>
<PublishProfile xmlns="http://schemas.microsoft.com/2015/05/fabrictools">
    <ClusterConnectionParameters />
    <ApplicationParameterFile Path="..\ApplicationParameters\Local.1Node.$(Configuration).xml" />
</PublishProfile>

然后,我编辑了 Service Fabric 项目的 sfproj 文件以包含以下 MSBuild 任务和目标:

<UsingTask TaskName="ReplaceFileText" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
    <ParameterGroup>
        <InputFilename ParameterType="System.String" Required="true" />
        <OutputFilename ParameterType="System.String" Required="true" />
        <MatchExpression ParameterType="System.String" Required="true" />
        <ReplacementText ParameterType="System.String" Required="true" />
    </ParameterGroup>
    <Task>
        <Reference Include="System.Core" />
        <Using Namespace="System" />
        <Using Namespace="System.IO" />
        <Using Namespace="System.Text.RegularExpressions" />
        <Code Type="Fragment" Language="cs">
            <![CDATA[
                File.WriteAllText(
                    OutputFilename,
                    Regex.Replace(File.ReadAllText(InputFilename), MatchExpression, ReplacementText)
                );
            ]]>
        </Code>
    </Task>
</UsingTask>
<Target Name="UpdateProfile" BeforeTargets="UpdateServiceFabricApplicationManifest">
    <ReplaceFileText InputFilename="PublishProfiles\Local.1Node.Template.xml" OutputFilename="PublishProfiles\Local.1Node.xml" MatchExpression="\$\(Configuration\)" ReplacementText="$(Configuration)" />
    <ReplaceFileText InputFilename="PublishProfiles\Local.5Node.Template.xml" OutputFilename="PublishProfiles\Local.5Node.xml" MatchExpression="\$\(Configuration\)" ReplacementText="$(Configuration)" />
</Target>

最后一步是为团队设置不同的构建配置。我根据 Service Fabric 服务项目和 Service Fabric 主机项目中的调试配置创建了 FT1-Debug 到 FT6-Debug。我放弃了所有其他项目。

此时,不同团队中的每个人都可以使用他们正在工作的集群的正确配置进行本地调试,只需更改构建配置并按 F5 进行调试即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Service Fabric 默认发布配置文件而不是 Local.xml 的相关文章

随机推荐

  • 什么意思 ”!”在 require.js 中

    什么意思 当我包含模块时在 require js 中 语法是什么 在我的项目中包含动态样式表 我发现https github com martinsb require css插入 效果很好 require css css sample cs
  • 目标版本 1.8 无效

    我尝试在 OPENSHIFT 上部署我的应用程序 但 Maven 无法编译它并出现错误 目标版本 1 8 无效 我的 构建 action hook export JAVA HOME OPENSHIFT DATA DIR jdk1 8 0 0
  • Web 服务上的 X509Certificate2 验证

    我正在开发 WCF Web 服务 用于检查 XML 签名中的证书是否有效 XML 使用合格且有效的 X509 证书进行签名 当我在 Visual Studio 开发环境中运行服务时 X509Certificate2 Verify 和 X50
  • 无状态 Spring MVC

    我目前正在阅读 Spring in Action 第三版 并且一直在尝试 Spring MVC 一切正常 直到我尝试将示例 Web 应用程序 移植 到无状态 Web 应用程序 为了确定是否创建了会话对象 我在 URL映射 只打印出req g
  • 使用 jQuery 加载图像并将其附加到 DOM

    我正在尝试从给定的链接加载图像 var imgPath imgLink attr href 并将其附加到页面上 这样我就可以将其插入到给定元素中对于图像查看器 尽管我搜索过堆栈溢出和jQuery文档没有尽头 我无法弄清楚 加载图像后 我想设
  • 保护C++程序免遭反编译[重复]

    这个问题在这里已经有答案了 可能的重复 是否可以反编译C Builder exe C Builder exe 安全吗 我使用 Microsoft Visual C 2010 Express 来编写程序 当我想分发我的程序时 我使用 发布 配
  • 如何处理JPA命名查询中数字类型的空值

    我想将两个参数传递给namedquery 一种是数字类型 另一种是字符串类型 它们都可以为空 例如 id null username joe 和 id 1 username joe 是两个不同的结果 在namedQuery中 如果id为nu
  • 找不到静态文件 - 在 Heroku 上部署 Django

    我正在尝试在 Heroku 上部署 Django 站点 但在让应用程序查找我的静态文件时遇到问题 我用过python manage py collectstatic将我的静态文件收集到 staticfiles 文件夹中 但我的应用程序似乎仍
  • HttpWebRequest 不发送 UserAgent

    我对 net 的整个 Web 端很陌生 并且遇到了一个小问题 我正在尝试执行以下 HttpWebRequest 操作 String uri https skyid sky com signup HttpWebRequest request
  • 在 Pydantic v2 中使用 bson.ObjectId

    I found 一些例子关于如何在其中使用 ObjectIdBaseModel类 基本上 这可以通过创建 Pydantic 友好的类来实现 如下所示 class PyObjectId ObjectId classmethod def get
  • 什么是交错音频? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我在核心音频文档中多次看到此交错音频 有人可以向我解释此属性的真正功能是什么吗 一般来说 如果您有 2 个通道 我们将它们称为 L 左 和 R 右 并且您想要传输或存储 20 个样本
  • PHP 中的换行帮助

    上面是我正在使用的以下代码 我想要的输出是 title reportno 但我得到的输出是 title reportno 谁能告诉我我在换行中做错了什么 您需要添加一个 br 标记到您的输出 abc output
  • httpclient.execute(httpget) 之后的 Android 代码没有在 try 中运行(使用 AsyncTask)

    我正在尝试从网站获取数据并将其解析到我的 Android 应用程序中 不幸的是我什至没有到达解析数据的部分 该代码在以下行之后不会运行 HttpResponse response httpclient execute httpget 结果是
  • 使用 Transformer 模型进行多实例分类

    我使用这里的变压器Keras 文档示例用于多实例分类 每个实例的类取决于一个包中的其他实例 我使用变压器模型是因为 它不对数据之间的时间 空间关系做出任何假设 这非常适合处理一组对象 例如 每个包最多可以有 5 个实例 每个实例有 3 个特
  • C# 通过子字符串区分 List

    我想从字符串列表中删除重复项 我通过使用不同的来做到这一点 但我想在比较时忽略第一个字符 我已经有一个删除重复项的工作代码 但我的代码还删除了每个字符串的第一个字符 List
  • 根据值更改甘特图中的条形颜色

    我想根据我传递的值更改甘特图中条形的颜色 什么时候Percent done等于高于 100 条形图应为红色 是否可以 https jsfiddle net 1cez1duf google charts load current packag
  • GoogleApiClient 尚未连接异常

    我正在开发的应用程序有时可以正常工作 但有时却会出现此错误 致命异常 java lang RuntimeException 无法暂停活动 com example dell locationapi com example dell locat
  • QStackedWidget - 一页一页地更改页面

    有没有办法更改 QStackedWidget 的页面而不指定实际索引 self homeb clicked connect lambda self stackedWidget setCurrentIndex 0 因此 我不想直接使用按钮直接
  • 统计其他表中不存在的所有记录 - SQL 查询

    我有两 2 个表 我正在尝试计算 Table1 和 Table1 delta 中的所有记录 而 Table1 delta 中的页面名称尚未列出到 Table1 中 如果 Table1 delta 中的 pagename 被列出到 Table
  • Service Fabric 默认发布配置文件而不是 Local.xml

    我们公司正在使用 Service Fabric 开发新应用程序 我们遇到的一个常见问题是 多个开发人员使用远程服务器上的队列 数据库 存储 每个开发人员对此都有不同的配置 所有设置都存储在每个环境的 ApplicationParameter