我在 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")
被解释为(link https://msdn.microsoft.com/en-us/library/dn906223(v=vs.110).aspx-- 仅存在于 .NET 4.6 中):
System.String System.String.Format(System.IFormatProvider, System.String, System.Object, System.Object)
代替 (link https://msdn.microsoft.com/library/1ksz8yb7(v=vs.110).aspx):
System.String System.String.Format(System.IFormatProvider, System.String, params System.Object[])