我有一个包含以下代码的库:
double result = -1;
if (!string.IsNullOrEmpty(fieldName))
{
string value = HttpContext.Current.Request.QueryString[fieldName];
if (string.IsNullOrEmpty(value))
{
value = HttpContext.Current.Request.Form[fieldName];
}
if (string.IsNullOrWhiteSpace(value) || !double.TryParse(value.Trim(), out result))
{
result = -1;
}
}
return result;
在我的Visual Studio 2015本地副本中编译很好。上周构建服务器也会让这个编译没有问题。突然,周一构建服务器开始出现错误:
QueryParser.cs(449,53):错误CS1620:必须使用'ref'关键字传递参数2 [$ projectPath \ Core40.csproj]
当我进行切换时(使用ref
而不是out
),构建服务器能够无错误地完成构建,但Visual Studio将不再编译。
从我对相关文档的阅读中,double.TryParse
总是采用out
关键字,所以关于构建服务器的库必须有一些东西,但我是不确定如何或如何诊断它。
在下面的一些问题之后,我回到课堂并确认有多个decimal.TryParse(value, out result)
,int.TryParse(value, out result)
,float.TryParse(value, out result)
,long.TryParse(value, out result)
和{ {1}}。我也能用“浮动”替换“双”,它工作得很好。这是Guid.TryParse(value, out result)
特有的内容。
显然,构建命令是:
double
另外,我可以用msbuild /m /p:Configuration=Release /p:Platform="Any CPU" $path\$solution.sln
块替换TryParse
(我的临时前进方式),但这实际上并没有解决问题。
答案 0 :(得分:1)
事实证明这是某种类型的错误缓存问题。最终,DevOps重新启动了构建机器,问题就消失了。我希望有一个真正的根本原因,但决议仍然“关闭并再次打开它。”