小编Phi*_*Atz的帖子

强制 Microsoft Build Tools 2015 为框架的目标版本而不是 4.6 包含 mscorlib

我在 Visual Studio 2015 中编写了一个应用程序,它使用 C# 6.0 功能并针对 .NET 4.5.2。当我使用 Microsoft Build Tools 2015 构建它时,这是由我们的 TeamCity 服务器完成的,生成的 bin 文件夹还包含mscorlib.dll. 这里的问题是 mscorlib.dll被复制的是 .NET 4.6 DLL,这会导致运行时出现问题。

我已经用string.Format()新的字符串插值语法替换了我的调用来解决这个问题。然而,这将根本问题推到了地毯下,而不是解决它:为什么 .NET 4.6 DLL 包含在我的构建中,我如何强制将 4.5.2 DLL 包含在它的位置?

如果您对这给我造成的运行时问题感兴趣,它会导致我的:

string.Format(CultureInfo.InvariantCulture, "{0}='{1}'", "key", "value")
Run Code Online (Sandbox Code Playgroud)

被解释为(链接——仅存在于 .NET 4.6 中):

System.String System.String.Format(System.IFormatProvider, System.String, System.Object, System.Object)
Run Code Online (Sandbox Code Playgroud)

而不是(链接):

System.String System.String.Format(System.IFormatProvider, System.String, params System.Object[])
Run Code Online (Sandbox Code Playgroud)

c# msbuild mscorlib c#-6.0 .net-4.5.2

5
推荐指数
1
解决办法
938
查看次数

try-catch没有捕获ExecuteNonQuery()异常

我遇到一个数据库调用问题,AccessViolationException当我调用时会抛出一个数据库调用ExecuteNonQuery().调用包含在一个try-catch块中,但异常永远不会被捕获.相反,我在Windows事件日志中得到一个关于它的条目.有没有办法在代码中捕获此异常?

IDbCommand cmd = ...
cmd.CommandText = "...";
try
{
    var results = command.ExecuteNonQuery();
}
catch (Exception ex)
{
    Console.Writeline("Caught exception: " + ex.Message);
}
Run Code Online (Sandbox Code Playgroud)

c# sybase exception try-catch access-violation

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