Visual studio Azure服务结构-不同环境的不同发布设置
这似乎是一个简单的问题,但我仍然没有找到答案,尽管我花了很多时间阅读了互联网上的文档和相关文章。我有一个SF应用程序,其中包含几个服务,我希望能够(从Visual Studio)为不同的环境打包这些服务:dev、test、prod。这些环境需要不同的设置,例如应用程序运行时的用户、到数据库的连接字符串、,等等。我已经使用Start serviceffabricapplicationupgrade命令更改了特定集群上的环境变量,但这样我无法设置我需要的所有内容,而且我更希望在应用程序包中有我需要的所有配置。我该怎么办?在这种情况下,我使用Windows独立群集(在开发环境中除外,它是一个本地开发群集)。服务级别 在您的ServiceManifest.xml中,位于Visual studio Azure服务结构-不同环境的不同发布设置,visual-studio,azure-service-fabric,Visual Studio,Azure Service Fabric,这似乎是一个简单的问题,但我仍然没有找到答案,尽管我花了很多时间阅读了互联网上的文档和相关文章。我有一个SF应用程序,其中包含几个服务,我希望能够(从Visual Studio)为不同的环境打包这些服务:dev、test、prod。这些环境需要不同的设置,例如应用程序运行时的用户、到数据库的连接字符串、,等等。我已经使用Start serviceffabricapplicationupgrade命令更改了特定集群上的环境变量,但这样我无法设置我需要的所有内容,而且我更希望在应用程序包中有我需要的
{YourService}\PackageRoot\serviceMifest.xml
下
您将有一个条目CodePackage
将标签EnvironmentVariables
添加到要使用空值的EnvironmentVariables下
<CodePackage Name="Code" Version="1.0.0">
<EntryPoint>
<!--...-->
</EntryPoint>
<EnvironmentVariables>
<EnvironmentVariable Name="Connectionstring" Value=""/>
</EnvironmentVariables>
</CodePackage>
应用程序级别
在{YourApplication}\ApplicationPackageRoot\ApplicationManifest.xml下的ApplicationManifest.xml
中
<?xml version="1.0" encoding="utf-8"?>
<PublishProfile xmlns="http://schemas.microsoft.com/2015/05/fabrictools">
<ClusterConnectionParameters ConnectionEndpoint="{YourEndpoint}" />
<!--Reference the settings file-->
<ApplicationParameterFile Path="..\ApplicationParameters\Test.xml" />
<UpgradeDeployment Mode="UnmonitoredAuto" Enabled="true">
<!--Specify additonal upgrade parameters here-->
<Parameters />
</UpgradeDeployment>
</PublishProfile>
有一个章节
为您要在部署时设置的每个值添加一个参数
<Parameters>
<Parameter Name="Connectionstring" DefaultValue="{your connectionstring}" />
</Parameters>
方括号中的值由
标记中定义的参数替换
特定于环境的配置
在{YourApplication}\ApplicationParameters
文件夹下。为每个环境创建一个文件。示例Test.xml
,并使用环境值指定参数
<?xml version="1.0" encoding="utf-8"?>
<Application xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="fabric:/{YourApplication}" xmlns="http://schemas.microsoft.com/2011/01/fabric">
<Parameters>
<Parameter Name="Connectionstring" Value="{Your test connection string}" />
</Parameters>
</Application>
完成此操作后,只需使用正确的发布配置文件部署应用程序。服务级别
在您的ServiceManifest.xml中,位于{YourService}\PackageRoot\serviceMifest.xml
下
您将有一个条目CodePackage
将标签EnvironmentVariables
添加到要使用空值的EnvironmentVariables下
<CodePackage Name="Code" Version="1.0.0">
<EntryPoint>
<!--...-->
</EntryPoint>
<EnvironmentVariables>
<EnvironmentVariable Name="Connectionstring" Value=""/>
</EnvironmentVariables>
</CodePackage>
应用程序级别
在{YourApplication}\ApplicationPackageRoot\ApplicationManifest.xml下的ApplicationManifest.xml
中
<?xml version="1.0" encoding="utf-8"?>
<PublishProfile xmlns="http://schemas.microsoft.com/2015/05/fabrictools">
<ClusterConnectionParameters ConnectionEndpoint="{YourEndpoint}" />
<!--Reference the settings file-->
<ApplicationParameterFile Path="..\ApplicationParameters\Test.xml" />
<UpgradeDeployment Mode="UnmonitoredAuto" Enabled="true">
<!--Specify additonal upgrade parameters here-->
<Parameters />
</UpgradeDeployment>
</PublishProfile>
有一个章节
为您要在部署时设置的每个值添加一个参数
<Parameters>
<Parameter Name="Connectionstring" DefaultValue="{your connectionstring}" />
</Parameters>
方括号中的值由
标记中定义的参数替换
特定于环境的配置
在{YourApplication}\ApplicationParameters
文件夹下。为每个环境创建一个文件。示例Test.xml
,并使用环境值指定参数
<?xml version="1.0" encoding="utf-8"?>
<Application xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="fabric:/{YourApplication}" xmlns="http://schemas.microsoft.com/2011/01/fabric">
<Parameters>
<Parameter Name="Connectionstring" Value="{Your test connection string}" />
</Parameters>
</Application>
完成此操作后,只需使用正确的发布配置文件部署应用程序。谢谢您的详细回答。在必须更改其他设置(环境变量除外)的情况下,此方法是否也有效。类似于应用程序的RunAs用户,这在不同的环境中是不同的。或者在DEV上为web应用提供HTTP端口,在测试/产品环境中使用受证书保护的HTTPS?您可以使用来控制端口。还没有尝试过RunAs策略。但是我想相同的语法应该也能起作用。我想知道,在上述场景中,存在于每个服务中的PackageRoot\Config\Settings.xml文件是如何集成的?他们的目的是什么,它们还带来了什么其他好处?From::Config package是PackageRoot下配置目录的内容,其中包含一组可独立更新和版本化的自定义配置设置,供您的服务使用。有一个API可以访问配置文件:-主要好处是这些配置都经过版本化,并且在滚动升级之后服务结构中的策略。感谢您提供详细的答案。在必须更改其他设置(环境变量除外)的情况下,此方法是否也有效。类似于应用程序的RunAs用户,这在不同的环境中是不同的。或者在DEV上为web应用提供HTTP端口,在测试/产品环境中使用受证书保护的HTTPS?您可以使用来控制端口。还没有尝试过RunAs策略。但是我想相同的语法应该也能起作用。我想知道,在上述场景中,存在于每个服务中的PackageRoot\Config\Settings.xml文件是如何集成的?他们的目的是什么,它们还带来了什么其他好处?From::Config package是PackageRoot下配置目录的内容,其中包含一组可独立更新和版本化的自定义配置设置,供您的服务使用。有一个API可以访问配置文件:-主要好处是这些配置都经过版本化,并且在滚动升级之后服务结构中的策略。