Tag: 编译器警告

Visual Studio 2013编译器警告未显示

我昨晚安装了Visual Studio 2013,我注意到它根本没有显示任何警告。 具体来说,我希望它突出显示未使用的局部变量,私有方法等。 我需要启用Visual Studio中的某个设置吗?

用户定义的编译器警告或C#中的错误

是否有可能让一些代码让编译器生成编译警告或错误? 也许有属性? **得到第一个答案和一些评论后,我意识到我的问题并不像我预期的那样清晰,并希望它成为现实。 我道歉。 希望所有的贡献者仍然和我们在一起。 ** 所以我更期待内部DSL。 某事物 喜欢 [MustAssign] public string Val {get; set;]

将struct与null进行比较时,编译器警告错误

请考虑以下代码: DateTime t = DateTime.Today; bool isGreater = t > null; 使用Visual Studio 2010(C#4,.NET 4.0),我收到以下警告: 警告CS0458:表达式的结果始终为’bool’类型的’null’ 这是不正确的; 结果始终为false (类型为bool ): 现在,struct DateTime重载了> (大于)运算符。 任何不可为空的结构(如DateTime)都可以隐式转换为相应的Nullable类型。 上面的表达式完全相同 bool isGreater = (DateTime?)t > (DateTime?)null; 这也产生了同样的错误警告。 这里>运算符是提升运算符。 如果其两个操作数中的任何一个的HasValue为false,则返回false 。 否则,提升的运算符将继续将两个操作数展开到底层结构,然后调用该结构定义的>的重载(但在这种情况下,如果一个操作数不是HasValue则不需要)。 你能重现这个bug吗?这个bug是众所周知的吗? 我误解了什么吗? 这对于所有结构类型(不是像int这样的简单类型,而不是枚举类型)都是相同的,它会使运算符重载。 (现在如果我们使用==而不是> ,一切都应该完全相似(因为DateTime也会重载==运算符)。但它不相似。如果我说 DateTime t = DateTime.Today; bool isEqual = t == null; 我没有得到警告☹有时你会看到人们不小心检查变量或参数为null,没有意识到他们的变量类型是一个结构(它重载==而不是像int这样的简单类型)。 如果他们得到警告会更好。) 更新:使用Visual Studio […]

C#无法加载文件或程序集…系统找不到指定的文件

编写一个例程WinForms应用程序,它引用了我自己编写的一些自定义库。 我正在构建一个依赖于另一个库的特定库,当我这样做时,我收到以下警告消息: “无法加载文件或程序集’RHLib’版本1.0.0.0,Culture = neutral,PublicKeyToken = null’或其依赖项之一。系统找不到指定的文件” 应用程序function,没有错误消息,但我是那些喜欢完全干净的编译之一 – 没有错误,没有警告。 我无法想出这个。 有问题的库有一个对“缺失”库的引用,当VS完成编译时,“缺失”库被编译并存在于Debug目录中,构建顺序将“缺失”库放置为构建的第一个项目并且“缺失” “库没有依赖关系 – 它是一个小型库,用于使我摆脱循环assembly问题。 有任何想法吗?

.NET项目中的条件引用,有可能摆脱警告吗?

我有两个SQLite程序集的引用,一个用于32位,一个用于64位,看起来像这样(这是一个试图摆脱警告的测试项目,不要挂在路径上) : True ..\..\LVK Libraries\SQLite3\version_1.0.65.0\64-bit\System.Data.SQLite.DLL True ..\..\LVK Libraries\SQLite3\version_1.0.65.0\32-bit\System.Data.SQLite.DLL 这会产生以下警告: Warning 1 The referenced component ‘System.Data.SQLite’ could not be found. 我有可能摆脱这个警告吗? 我开发时只考虑将项目配置为32位的一种方法,让构建机器在构建64位时修复引用,但这看起来有点尴尬,可能容易出错。 还有其他选择吗? 我想摆脱它的原因是警告显然被TeamCity收集并定期标记为我需要调查的东西,所以我想完全摆脱它。 编辑 :根据答案,我试过这个: … ..\..\LVK Libraries\SQLite3\version_1.0.65.0\32-bit … ..\..\LVK Libraries\SQLite3\version_1.0.65.0\32-bit … ..\..\LVK Libraries\SQLite3\version_1.0.65.0\64-bit … ..\..\LVK Libraries\SQLite3\version_1.0.65.0\64-bit 然后在我的参考: False $(SqlitePath)\System.Data.SQLite.DLL 这摆脱了警告,但这是正确的吗?