非 SF 项目可以使用 applicationmanifest 配置值吗?
Can a non-SF project make use of the applicationmanifest configuration values?
我按以下方式设置了一个 Service Fabric 应用程序:
Solution
--SF Project
--ApplicationManifest.xml
--Stateless Project (uses app manifest values)
--Stateless Project (uses app manifest values)
--Class Library (used as a repository by the above two projects)
如何启用 class 库以使用来自 SF 项目的 ApplicationManifest.xml 配置文件?
为了让项目能够使用 build/deployment 的 AppManifest,只需像这样创建它们:
未添加为 Service Fabric 项目的项目如何使用应用程序清单?
Service Fabric 项目可以通过在 settings.xml 和 servicemanifest 中包含参数来使用 appmanifest(但非 SF 项目不能):
选项#1
如果您需要访问服务 setting.xml 中定义的参数,下一个应该可以 -
- 在你的非SF项目中,安装
Microsoft.Extensions.Configuration 和 ServiceFabric.Extensions.Configuration NuGet 包
无论您决定在何处访问参数,请使用下一个代码片段 -
var builder = new ConfigurationBuilder().AddFabricConfiguration("Config");
var configuration = builder.Build();
var section = configuration.GetSection("MyConfigSection");
var parameterValue = section["MyParameter"];
请注意 - 您一次只能访问一项 SF 服务。这是因为 AddFabricConfiguration() 通过调用 FabricRuntime.GetActivationContext() 工作,它将加载的设置与您从中调用非 SF 代码的 SF 服务联系起来。
选项#2
下一个选项可以在任何可以与 SF 建立连接的地方使用。使用下面的代码,您可以读取传递到应用程序清单中的任何参数 -
var fClient = new FabricClient();
var namespaceManager = new XmlNamespaceManager(new NameTable());
namespaceManager.AddNamespace("ns", "http://schemas.microsoft.com/2011/01/fabric");
var manifest = XDocument.Parse(fClient.ApplicationManager.GetApplicationManifestAsync("YOUR_APP_TYPE_NAME", "YOUR_APP_TYPE_VERSION").Result);
var parameterValue = manifest.XPathSelectElement("/ns:ApplicationManifest/ns:Parameters/ns:Parameter[@Name='PARAMETER_NAME']", namespaceManager).Attribute("DefaultValue").Value;
我按以下方式设置了一个 Service Fabric 应用程序:
Solution
--SF Project
--ApplicationManifest.xml
--Stateless Project (uses app manifest values)
--Stateless Project (uses app manifest values)
--Class Library (used as a repository by the above two projects)
如何启用 class 库以使用来自 SF 项目的 ApplicationManifest.xml 配置文件?
为了让项目能够使用 build/deployment 的 AppManifest,只需像这样创建它们:
未添加为 Service Fabric 项目的项目如何使用应用程序清单?
Service Fabric 项目可以通过在 settings.xml 和 servicemanifest 中包含参数来使用 appmanifest(但非 SF 项目不能):
选项#1
如果您需要访问服务 setting.xml 中定义的参数,下一个应该可以 -
- 在你的非SF项目中,安装 Microsoft.Extensions.Configuration 和 ServiceFabric.Extensions.Configuration NuGet 包
无论您决定在何处访问参数,请使用下一个代码片段 -
var builder = new ConfigurationBuilder().AddFabricConfiguration("Config"); var configuration = builder.Build(); var section = configuration.GetSection("MyConfigSection"); var parameterValue = section["MyParameter"];
请注意 - 您一次只能访问一项 SF 服务。这是因为 AddFabricConfiguration() 通过调用 FabricRuntime.GetActivationContext() 工作,它将加载的设置与您从中调用非 SF 代码的 SF 服务联系起来。
选项#2
下一个选项可以在任何可以与 SF 建立连接的地方使用。使用下面的代码,您可以读取传递到应用程序清单中的任何参数 -
var fClient = new FabricClient();
var namespaceManager = new XmlNamespaceManager(new NameTable());
namespaceManager.AddNamespace("ns", "http://schemas.microsoft.com/2011/01/fabric");
var manifest = XDocument.Parse(fClient.ApplicationManager.GetApplicationManifestAsync("YOUR_APP_TYPE_NAME", "YOUR_APP_TYPE_VERSION").Result);
var parameterValue = manifest.XPathSelectElement("/ns:ApplicationManifest/ns:Parameters/ns:Parameter[@Name='PARAMETER_NAME']", namespaceManager).Attribute("DefaultValue").Value;