祝福大家!这是我在stackoverflow上的第一个问题.我有一个WPF应用程序,我正在为我的部门的开发人员编写,有一些设置我需要在启动时检查并更新,如果它们没有设置(一个是用户的可执行文件的位置)电脑,我们都拥有它,只是不在同一个地方).因此,当我的应用程序第一次启动时,我需要弹出一个文件追踪器让他们选择位置.
我需要做的是将它的位置写到appSettings,但我似乎无法得到它,昨晚我努力搜索谷歌试图找到一种方法来做到这一点.我看到的大多数答案都涉及将app.config文件作为直接XML读取,这似乎不对.
所以,我只需要一种方法来为我的应用程序更新appSettings中的值.我可以从他们那里读得很好,只是还没弄明白如何写给他们.非常感谢!
詹姆士
是否有可能有1个工作区包含同一项目的不同分支副本?假设我有Project1,它在这个结构中:
/trunk/Project1
/branches/1/Project1
/branches/2/Project1
Run Code Online (Sandbox Code Playgroud)
我可以在同一个工作区中拥有3个Project 1实例,每个eclipse项目指向trunk还是任何分支?基本上我只是想知道是否必须避免为每个分支创建一个新的工作区.
我正在开发一个代码库,它有很多相同的ConfigurationManager.AppSetting调用.
这听起来像是一个可能的性能问题吗?
或者因为数据非常小是微不足道而且不"昂贵"?不断返回文件获取数据,或.NET运行时缓存文件/值/调用?
如果这不是性能问题,那么它只是一种访问应用程序配置值的无组织方法,应该重新考虑是为了更清晰,更一致地实现访问设置吗?
我有时会这样:
在Azure门户中,我转到"App Services",然后单击我的Web应用程序,然后转到"应用程序设置".
在这里,我从"应用程序设置"列表中更改了一个值:
例如.我将"128"更改为"129"
最后我点击"保存".
这会导致我的Web应用程序重新启动.我不希望这样.
问题:有没有办法在不重启的情况下手动更改此值?如果没有,我应该以另一种方式存储这个值吗?也许在web.config中使用一个我可以每次上传的新部分?
如果我使用新的部分,例如:
<moreAppSettings configSource="moreSettings.config">
</moreAppSettings>
Run Code Online (Sandbox Code Playgroud)
这个moreSettings.config是这样的:
<?xml version="1.0" encoding="utf-8"?>
<moreSettings>
<add key="ClientAppBuild" value="129" />
</moreSettings>
Run Code Online (Sandbox Code Playgroud)
我可以上传并覆盖该单个.config文件而无需重启吗?
通过ARM模板部署Azure功能应用程序和AppSettings时,是否可以告诉Azure不要删除未在模板中声明的AppSettings?
例如,从模板中获取以下AppSettings配置,并想象我正在更新现有的功能应用程序.在这种情况下,将删除名为storageaccountname_STORAGE的AppSetting,这是不合需要的,因为(例如)它已被创建以促进绑定.
{
"apiVersion":"2016-08-01",
"name":"appsettings",
"type":"config",
"dependsOn":[
"[resourceId('Microsoft.Web/Sites/Slots', variables('functionAppName'), 'Staging')]"
],
"properties":{
"AzureWebJobsStorage":"[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listkeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2015-05-01-preview').key1, ';')]",
"AzureWebJobsDashboard":"[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listkeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2015-05-01-preview').key1, ';')]",
"APPINSIGHTS_INSTRUMENTATIONKEY":"[reference(resourceId('Microsoft.Insights/components', variables('applicationInsightsName')), '2014-04-01').InstrumentationKey]",
"FUNCTION_APP_EDIT_MODE":"readwrite",
"FUNCTIONS_EXTENSION_VERSION":"~1",
"WEBSITE_CONTENTAZUREFILECONNECTIONSTRING":"[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listkeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2015-05-01-preview').key1, ';')]",
"WEBSITE_CONTENTSHARE":"[toLower(variables('functionAppName'))]",
"WEBSITE_NODE_DEFAULT_VERSION":"6.5.0"
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法通过ARM模板选择性地设置AppSettings,或者模板根本不适合这种情况所需的功能?
寻找任何与SlowCheetah合作的人在Web项目下转换配置文件的帮助.我们发现从web.config引用的部分配置文件没有被转换.
例如,我们在web.config中包含对部分配置AppSettings.config和ConnectionsString.config的引用,如下所示:
</system.web>
<connectionStrings configSource ="ConnectionsString.config"></connectionStrings>
<appSettings configSource ="AppSettings.config"></appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
然后在AppSettings.config中我们只有AppSettings部分,如下所示:
<appSettings>
<add key="LostPasswordBCC" value="knock@timmons.com" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)
最后在转换文件AppSettings.Debug.config中我们有一些补充:
<?xml version="1.0" encoding="utf-8" ?>
<!-- For more information on using transformations
see the web.config examples at http://go.microsoft.com/fwlink/?LinkId=214134. -->
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<appSettings >
<add key="Release" value="Something" xdt:Transform="Insert" />
</appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
显然上面只是一个测试,看看转换发生了,但我们发现的是,在尝试预览转换时,我们得到的所有内容都是错误"处理转换时出错".发布尝试也失败了.
如果我们使配置文件完全形成xml而不是从web.config引用,那么转换似乎工作正常 - 但是希望在多个项目之间共享这些文件.
有没有人知道是否有一个解决方法,我们既可以从web.config引用部分配置,也可以转换那些部分文件?我们正在处理遗留代码,其中包含大量尝试合并的Web项目中的配置文件,因此需要从Web配置链接到单独的共享文件.
我试图将我的.NET应用程序设置文件保存到用户的%MyDocument%\ MyApplication文件夹,但我不知道如何检查现有的文件夹\文件,并在保存时创建或附加文件夹\ file.我不想打开saveFileDialog,因为我需要文件在所有用户计算机上的相同位置.这是我到目前为止所做的,但它不起作用.任何帮助,将不胜感激:
var saveSettings = settingsList.text; //assign settings to a variable
saveSettings = Regex.Replace(saveSettings, @"\s+", "").Trim() + Environment.NewLine; //remove any extra spaces and add a carriage return so that each setting is on a new line
var fileName = string.Format("{0}\\{1}", Environment.SpecialFolder.MyDocuments + "\\MyApp\\", "settings.dat"); //generate path to settings.dat
File.AppendAllText(fileName, saveSettings); //save settings.dat
Run Code Online (Sandbox Code Playgroud) 应用程序是否可以以编程方式获取安装在iOS设备上的VPN配置文件列表?
我猜这应该是不可能的,因为这些信息位于应用程序的沙箱之外.但是,我已经看到了NetworkExtension带有NEVPNConnection和NEVPNManager类的框架,允许您动态运行VPN.如果您可以动态设置VPN,也可以获取现有的VPN配置文件.
此外,NEVPNManager有以下方法似乎加载一些首选项:
(void)loadFromPreferencesWithCompletionHandler:(void (^)(NSError *error))completionHandler NS_AVAILABLE(10_10, 8_0);
所以,如果你能告诉我是否有可能获取已安装的VPN配置文件列表,那就太棒了.
让我们假设我们有这个部分 appsettings.json
{
"crypto":{
"A": "some value",
"B": "foo foo",
"C": "last part"
},
...
}
Run Code Online (Sandbox Code Playgroud)
"crypto"某些加密密钥的json序列化在哪里.
稍后在代码中,我需要做这样的事情:
var keyOptions = CryptoProvider.RestoreFromJson(Configuration.GetSection("crypto"))
Run Code Online (Sandbox Code Playgroud)
但是Configuration.GetSection返回ConfigurationSection实例.有办法以某种方式获取原始的json数据吗?
我认为ConfigurationSection.Value应该做的伎俩,但出于某种原因,它总是如此null.
我在 appsetting.json 中有这个提供程序字典
"AppSettings": {
"Providers": {
"http://localhost:5001": "Provider1",
"http://localhost:5002": "Provider2"
},
"ArrayWorks": [
"http://localhost:5001",
"http://localhost:5002"
],
"SoDoesColonInDictionaryValue": {
"Provider1": "http://localhost:5001",
"Provider2": "http://localhost:5002"
}
}
Run Code Online (Sandbox Code Playgroud)
下面抛出异常,因为字典键中有冒号。
Configuration.GetSection("AppSettings").Get<AppSettings>()
但是,冒号可以很好地用作字典值或数组,但不能用作字典键。我读到冒号在配置中具有特殊含义,但似乎没有办法逃脱。为什么?
编辑:
public class AppSettings
{
public string ApplicationName { get; set; }
public IDictionary<string, string> Providers { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
调试 Configuration.GetSection("AppSettings") 时,您会得到这个
Key AppSettings:Providers:http://localhost:5000
Value Provider1
Run Code Online (Sandbox Code Playgroud)
本来是这样的
Key AppSettings:Providers:http_//localhost_5000
Run Code Online (Sandbox Code Playgroud)
但似乎没有办法控制配置如何对待 :::
appsettings ×10
asp.net-core ×2
azure ×2
c# ×2
.net ×1
append ×1
branch ×1
eclipse ×1
file ×1
ios ×1
json ×1
performance ×1
slowcheetah ×1
svn ×1
transform ×1
vpn ×1
web-config ×1
wpf ×1
xslt ×1