app-config 相关问题

.NET应用程序配置文件包含特定于应用程序的设置。

更改配置时调试目标不会切换

我有一个 .NET Framework WPF 项目(在 4.6.1 和 4.8 上测试),具有两种配置,分配了 AssemblyName 属性 我有一个 .NET Framework WPF 项目(在 4.6.1 和 4.8 上测试),具有两种配置,并分配了 AssemblyName 属性 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> ... <AssemblyName>WpfApp2</AssemblyName> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> ... <AssemblyName>WpfApp3</AssemblyName> </PropertyGroup> 它们编译正确(调试有 WpfApp2.exe,发布有 WpfApp3.exe)。 问题是这样的:在调试一个配置时,调试另一个配置时会出现错误,提示找不到调试目标。 bin路径是正确的,但看起来文件名没有改变。例如,调试 Debug 项目没问题,但之后,如果我开始调试 Release 配置,则会收到以下错误: it's still attempts to use WpfApp2.exe 为什么它不尝试寻找 WpfApp3.exe,就像 XML 中编写的那样? 重新加载项目不起作用,但重新启动 Visual Studio(已测试 2019 和 2022 版本)可以。我想要一个更快的方法来解决这个问题。 经过我的测试,这个问题确实存在。但你可以通过以下方法来避免: 1:右键单击项目并选择属性。 2:在“调试”选项卡中,手动设置编译文件的“启动外部程序”路径,例如: 设置为 bin\Debug\WpfAppDebug.exe 进行调试配置 设置为 bin\Release\WpfAppRelease.exe 进行发布配置

回答 1 投票 0

运行单元测试时的 C# app.config 键

我花了大约一个小时。我有一个位于单元测试项目中的 app.config 。当我编译/构建它时,它最终会与其他所有内容一起出现在 bin 文件夹中。但是,当我运行所述单元测试时......

回答 1 投票 0

.NET 6 中的绑定重定向

我一直在尝试修复 .NET 6 控制台项目中的版本冲突。我找不到像 app.config 的 BindingRedirect 或 CodeBase 这样适用于 .NET Framework 中这种情况的方法。 有没有

回答 2 投票 0

构建后给app.config另一个名称?

众所周知,当您使用 app.config 文件构建项目时,它会被复制到 bin 目录并重命名为 $(targetFileName).config。 是否可以将其称为其他名称? 对于

回答 4 投票 0

加密 app.config 文件中的连接字符串的最佳方法是什么?

我的目标是创建一个将在不同的 PC 上使用的 WPF 应用程序,并且有一个 app.config 文件,其中包含如下连接字符串的框架: 我的目标是创建一个 WPF 应用程序,该应用程序将在不同的 PC 上使用,并且将有一个 app.config 文件,其中包含如下连接字符串的骨架: <connectionStrings> <add name="ConnectionString" connectionString="Server=[Server1];Database=[TargetDB];User Id=[Username];Password=[Password];" providerName="System.Data.SqlClient"/> <add name="ConnectionStringMirror" connectionString="Data Source=[Server1];Failover Partner=[Server2];Initial Catalog=[TargetDB];User Id=[Username];Password=[Password];Integrated Security=[DBAuth];" providerName="System.Data.SqlClient"/> </connectionStrings> 用户输入连接字符串详细信息后,应用程序将加密连接字符串,WPF 应用程序将能够解密该字符串并利用它连接到数据库。 我研究了几个有关加密的问题,我想在 SQL 连接字符串上实现它,但是,我似乎无法缩小加密连接字符串和安全级别的最佳方法。 我查看的问题是: 在App.config中加密密码 在C#中加密和解密字符串? 加密 appConfig configSection 的部分 c# App.config - 加密部分错误: 我浏览过的网站: 使用 C# 加密和解密 .Net 连接字符串 加密 ASP.NET 2.0 应用程序中的配置信息 如何:使用 DPAPI 加密 ASP.NET 2.0 中的配置节 首先您需要考虑您需要什么级别的安全性。 如果这只是为了防止用户搬起石头砸自己的脚,我会考虑类似ROT13的东西。请注意,这并不能提供真正的安全性,但可以防止有人知道的信息足以对自己造成危险。您可以使用更高级的加密方法,例如 AES,但它无法防范有能力且有动机的攻击者。 如果您需要实际的安全性,您需要为每个用户拥有唯一的帐户。您可以使用 windows Data Protection API 来保护本地计算机上缓存的凭据。您还需要确保用户只能对数据库执行允许的操作。这可以通过配置数据库用户和权限来完成,但更常见的方法是在数据库之上创建一个服务(如 webAPI)来管理身份验证和权限,并禁止从客户端对数据库的所有直接访问。

回答 1 投票 0

如何使用 App.config 存储 url 并在使用 C# 测试 Selenium 测试时检索 url?

我创建了一个 App.config 文件来存储 url,而不是在我的单元测试中对它们进行硬编码,因此如果 url 发生变化,我只有一个地方需要更改它们。这是我的 App.config(url...

回答 3 投票 0

未提供 System.CommandLine 选项时回退到 app.config 的最佳方法?

除了直接预处理参数之外,还有什么方法可以确定是否未提供选项(同时仍然允许默认值),以便可能回退到读取 除了直接预处理 args 之外,还有什么方法可以确定是否提供了 NOT 选项(同时仍然允许默认值),以便有可能从 app.config 中读取 。 这是我想为其创建后备的示例选项: static async Task<Int32> Main(String[] args) { Option<Int32> pollingRateOption = new Option<Int32>( aliases: new[] { "-r", "--Polling-Rate" }, description: "Rate at which to poll, in milliseconds.", isDefault: true, parseArgument: result => { if (Int32.TryParse(result.Tokens.Single().Value, out Int32 pr)) { if (pr < 1 || pr > 1000) { result.ErrorMessage = "Polling-Rate must be an integer from 1-1000"; } return pr; } else { result.ErrorMessage = "Polling-Rate must be an integer from 1-1000"; return 0; // Ignored. } } ); pollingRateOption.ArgumentHelpName = "1-1000"; pollingRateOption.Arity = ArgumentArity.ExactlyOne; pollingRateOption.SetDefaultValue(5); RootCommand rootCommand = new RootCommand($"{AppName}"); rootCommand.AddOption(pollingRateOption); rootCommand.SetHandler((pollingRateValue) => { Run(pollingRateValue); }, pollingRateOption); return await rootCommand.InvokeAsync(args); } 好吧,虽然这看起来有点hacky,但解决方案似乎是删除 SetDefaultValue(),保留 isDefault: true,然后使用 if (!result.Tokens.任意()). 不过,这有一个警告,在 parseArgument 处理程序中设置的任何值都将在 --help 文本中显示为默认值。因此,如果从 app.config 动态提取它, [default: ] 将是可变的。这可能是不可取的。 解决这个问题的方法似乎是使用 CommandLineBuilder() 覆盖帮助文本,并通过 .UseHelp() 硬编码默认文本。以下是最终解决方案的工作示例。 static async Task<Int32> Main(String[] args) { Option<Int32> pollingRateOption = new Option<Int32>( aliases: new[] { "-r", "--Polling-Rate" }, //description: "Rate at which to poll, in milliseconds.", //No longer needed, added through .UseHelp() below isDefault: true, parseArgument: result => { Int32 pr; if (!result.Tokens.Any()) { //If commandline option not specified, attempt to get it from app.config if (!Int32.TryParse(ConfigurationManager.AppSettings["Polling-Rate"], out pr)) { pr = 5; //Actual default if no option on commandline or in app.config } } else { if (!Int32.TryParse(result.Tokens.Single().Value, out pr)) { result.ErrorMessage = "Polling-Rate must be an integer from 1-1000"; } } if (pr < 1 || pr > 1000) { result.ErrorMessage = "Polling-Rate must be an integer from 1-1000"; } return pr; } ); pollingRateOption.ArgumentHelpName = "1-1000"; pollingRateOption.Arity = ArgumentArity.ExactlyOne; //pollingRateOption.SetDefaultValue(5); //parseArgument handler will not fire on missing option if default is set RootCommand rootCommand = new RootCommand($"{AppName}"); rootCommand.AddOption(pollingRateOption); rootCommand.SetHandler((pollingRateValue) => { Run(pollingRateValue); }, pollingRateOption); Parser parser = new CommandLineBuilder(rootCommand) .UseDefaults() .UseHelp(ctx => { ctx.HelpBuilder.CustomizeSymbol(pollingRateOption, secondColumnText: "Rate at which to poll, in milliseconds. [default: 5]"); }) .Build(); return await parser.InvokeAsync(args); }

回答 1 投票 0

Nlog IsDebugEnabled 且所有其他均为 false

我正在尝试为我的解决方案设置 Nlog。我有一个包含多个项目的解决方案,可以为 Revit 制作插件。 我按照所有说明操作,设置了 Nlog.config 文件,设置了目标和

回答 1 投票 0

我可以通过编程方式设置 app.config 'useLegacyV2RuntimeActivationPolicy' 属性吗?

我必须将 .NET 3.5 迁移到 4.0,但一些 dll 未加载,谷歌搜索后我发现创建一个 app.config 可以解决它: 我必须将 .NET 3.5 迁移到 4.0,但某些 dll 未加载,在谷歌搜索后我发现创建一个 app.config 可以解决它: <?xml version="1.0" encoding="utf-8" ?> <configuration> <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0" /> </startup> </configuration> 我想在不使用配置文件的情况下设置这些选项,可以吗? 可以在运行时从 .NET 应用程序或库中进行设置,但有一些限制。您可以使用 ICLRRuntimeInfo 接口来处理此问题。详情请看我写的这篇文章。 技术上是可行的。您必须自己托管 CLR,以便在创建主 AppDomain 之前调用 ICLRRuntimeInfo::BindAsLegacyV2Runtime() 方法。 .config 文件通常是一个低得多的痛点,除非您已经在托管。

回答 2 投票 0

在运行时调用 ICLRRuntimeInfo.BindAsLegacyV2Runtime 的危险

我有一个使用 Crystal Reports 的 .NET 应用程序。阻碍我升级到 .NET 4.0 的一大原因是,如果应用程序中没有以下几行,水晶报表将无法工作。

回答 1 投票 0

错误:服务 System.Windows.Forms.Design.IEventHandlerService 已存在于服务容器中

我正在开发一个基于Windows Form模板的Windows应用程序。我正在使用.NET 3.5版本。在此应用程序中,目标是可以从应用程序管理不同表单的所有视觉设置。

回答 6 投票 0

app.exe.config 中的更新值未反映在我的应用程序 .NET 中

我真的很难理解为什么我的 app.exe 没有获取 app.exe.config 中的更新值 应用程序配置 <

回答 2 投票 0

c# 在exe中嵌入配置文件

我有一个控制台程序“A”,在给定点将运行程序“B”和程序“C”。但是,我遇到了与每个程序关联的 app.config 问题。基本上程序A是j...

回答 4 投票 0

.NET 类库项目中的多个 App.Config 文件

我正在创建一个类库项目。 现在默认情况下我有一个 App.Config 文件,以便我将所有环境特定数据放入该配置文件中。 现在基于环境(无论是 Dev /

回答 4 投票 0

配置部分“appSettings”有一个意外的声明

我的 c# 中的 app.config 文件遇到问题 大多数时候服务可以读取第节,但有时会出现下面的错误。 这个问题是间歇性出现的,所以...

回答 4 投票 0

为 .config 文件中的自定义部分启用智能感知

在 Visual Studio 中编辑 .NET 配置文件(app.config、web.config 等)时,我会得到 Visual Studio 的智能感知来指导我选择应用程序的设置。如果我添加自定义配置

回答 3 投票 0

以编程方式将密钥添加到 App.config C#

我正在尝试以编程方式添加密钥并将其保存到我的 App.config 文件中。我的代码如下,我见过很多这样的不同示例,但我的代码不起作用。我正在尝试添加一个全新的密钥...

回答 3 投票 0

如何首先覆盖 EF 代码中的“不可见”连接字符串?

我首先通过代码使用 EF 6.1.2 编写了我的应用程序。输入命令“更新数据库”后,数据库已在我的 Microsoft SQL Server 2017 中创建。到目前为止一切顺利。然而我从来没有...

回答 1 投票 0

如何将环境变量列表绑定到.Net中的选项

我在托管我的应用程序的 kubernetes pod 上有一个环境变量列表,它没有任何部分,只有如下所示的变量列表: KAFKA_BOOTSTRAP_SERVERS 卡夫卡_PAS...

回答 1 投票 0

在应用程序服务配置中设置和使用 web.config 中不存在的变量名称

使用 .NET Framework 4.8 作为网站的 API 应用程序。 //网页配置 //主项目解决方案中的代码,这有效 变量 ID =

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.