相关疑难解决方法(0)

user.config的自定义路径

我使用VS2008中的设置设计器管理我的应用程序设置.

"user.config文件的确切路径如下所示:"

<Profile Directory>\<Company Name>\
 <App Name>_<Evidence Type>_<Evidence Hash>\<Version>\user.config
Run Code Online (Sandbox Code Playgroud)

有没有办法定制这条路径?我更喜欢这样的东西:

<Profile Directory>\<Company Name>\
 <App Name>\<Version>\user.config
Run Code Online (Sandbox Code Playgroud)

我注意到新创建的文件夹("Test Company" - >"Test_Company")中的"公司名称"中的下划线替换了空格.我真的希望关闭这种行为.

你知道,我可以写一个新的基于XML的设置处理程序,但我想使用设置设计器.

c# settings visual-studio

29
推荐指数
2
解决办法
2万
查看次数

自动生成的 AppData/Local 文件夹被“错误”创建

当我运行 .net exe 时,会创建相应的文件夹C:\Users\UserName\AppData\Local\AppName

在此文件夹内,会创建另一个文件夹AppName_Url_ABCXYZ

在此文件夹内,还会为 .net exe 的程序集版本创建另一个文件夹0.2.28.0

谁能解释一下 Windows 如何决定创建二级文件夹AppName_Url_ABCXYZ

当我增加程序集版本并执行单个文件发布并运行生成的 exe 时,我遇到问题,AppName_Url_ABCXYZ创建一个包含新程序集版本文件夹的新文件夹。

这会导致问题,因为它破坏了功能, Properties.Settings.Default.Upgrade()因为要升级的设置不再位于预期目录中

好的:

-AppData
 -Local
  -MyApp
   -MyApp_Url_ABCXYZ
    -0.2.13.0
    -0.2.14.0
    -0.2.15.0
Run Code Online (Sandbox Code Playgroud)

坏的:

-AppData
 -Local
  -MyApp
   -MyApp_Url_ABC1
    -0.2.13.0
   -MyApp_Url_ABC2
    -0.2.14.0
   -MyApp_Url_ABC3
    -0.2.15.0
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

更新:

@Richard Deeming 提供的信息表明 appdata 文件夹的哈希部分是这样生成的:

var uri = "file:///" + fullExePath; //or 'assemblyName.CodeBase' if vshost (you can check the 'FriendlyName')
uri = uri.ToUpperInvariant();

var ms = new MemoryStream();
var bSer = new BinaryFormatter();
bSer.Serialize(ms, uri);
ms.Position …
Run Code Online (Sandbox Code Playgroud)

.net c# windows

8
推荐指数
1
解决办法
1340
查看次数

在调试会话之间保留app.config中的数据

所以,长话短说,我正在开发一个应用程序,它将使用一些可能在运行时通过应用程序本身更改的配置信息.出于我的目的,我想到了使用这个Settings课程.

我们认为问题在于,应用程序的不同运行之间不会保留信息:

运行1)

Console.WriteLine(Settings.Default["User"]); //prints "Default user"
Settings.Default["User"] = "abc";
Console.WriteLine(Settings.Default["User"]); //prints "abc"
Run Code Online (Sandbox Code Playgroud)

跑2)

Console.WriteLine(Settings.Default["User"]); //prints "Default user"
Settings.Default["User"] = "abc";
Console.WriteLine(Settings.Default["User"]); //prints "abc"
Run Code Online (Sandbox Code Playgroud)

(两者打印完全相同的输出)

两个运行都显示相同的第一个打印"默认用户",虽然在第二次运行时我想得到"abc",表明信息不是在不同的应用程序执行之间持久化.

我承认这必须与Visual Studio处理.config文件的方式有关,但即便如此,我想知道如何纠正这种(讨厌的)行为?

c# app-config visual-studio

7
推荐指数
1
解决办法
2177
查看次数

标签 统计

c# ×3

visual-studio ×2

.net ×1

app-config ×1

settings ×1

windows ×1