C# 避免运行前设置/配置导致错误的最佳方法

C# 避免运行前设置/配置导致错误的最佳方法,c#,C#,一个常见的问题是程序可能编译正常,但外部(用户/环境)设置可能会导致应用程序在运行时崩溃 除了在整个代码中执行检查外(唉,实际上是在运行时执行的), 我希望在构建过程中使用规则集断言,至少默认值设置是一致的 最简单的情况可能是,如果默认设置是硬编码的: Directory defaultDir = new Directory("D:\\Data"); UserLogin usr1 = "Jesse"; UserLogin usr2 = "James"; (是的,“呸”;这是一个例子,请不要对那

一个常见的问题是程序可能编译正常,但外部(用户/环境)设置可能会导致应用程序在运行时崩溃

除了在整个代码中执行检查外(唉,实际上是在运行时执行的), 我希望在构建过程中使用规则集断言,至少默认值设置是一致的

最简单的情况可能是,如果默认设置是硬编码的:

Directory defaultDir = new Directory("D:\\Data");
UserLogin usr1 = "Jesse";
UserLogin usr2 = "James";
(是的,“呸”;这是一个例子,请不要对那个不重要的细节发表评论/回答……我知道这对你们中的一些人来说很难,但请克制一下!:-)

那么,是否有一种简单的方法可以在构建期间检查“D:\Data”是否存在,以及usr1和usr2是否有不同的登录字符串等等


我确信.Net中有断言机制,也可能有单元测试(我宁愿避免后者,因为在这种特殊情况下,它可能太大了,不太适合使用/需要。但我想这也是单元测试设计的目的…)

在项目属性中,您可以设置一个命令在构建之前运行,因此,您可以创建检查设置的exe,并在“预生成事件命令行”中运行它。

在项目属性中,您可以将命令设置为在生成之前运行,因此您可以创建检查设置的exe,并在“预生成事件命令行”中运行它。

具有错误值的默认设置更糟糕。你不会得到一个例外,它只是不会正常工作,这是不明显的原因。您将浪费更多的时间。问题确实是,我希望避免某些类的设置被破坏,并且只在运行时才意识到这一点。具有错误值的默认设置更糟糕。你不会得到一个例外,它只是不会正常工作,这是不明显的原因。你会浪费更多的时间。问题是我确实希望避免某些类的设置被破坏,并且只在运行时实现它OK。如果设置不在设置中,而是在XML文件的其他位置,或者有时是硬编码的默认值,该怎么办?您的应用程序设置可以在任何您想要的地方,您的CheckSettingsConstraints.exe将执行您需要的任何操作:解析XML文件/c#文件/读取注册表项,调用web服务。。。。(尽管我强烈建议您避免硬编码值)。如果设置不在设置中,而是在XML文件的其他位置,或者有时是硬编码的默认值,该怎么办?您的应用程序设置可以在任何您想要的地方,您的CheckSettingsConstraints.exe将执行您需要的任何操作:解析XML文件/c#文件/读取注册表项,调用web服务。。。。(尽管我强烈建议您避免硬编码值)。