Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Visual Studio似乎在更改代码时也会抛出错误_C#_Visual Studio_Dynamics Crm_Microsoft Dynamics - Fatal编程技术网

C# Visual Studio似乎在更改代码时也会抛出错误

C# Visual Studio似乎在更改代码时也会抛出错误,c#,visual-studio,dynamics-crm,microsoft-dynamics,C#,Visual Studio,Dynamics Crm,Microsoft Dynamics,这是一个非常奇怪的问题,有点难以解释,所以请和我在一起 我有一些非常基本的c#代码,它基于输入的字符串运行,然后将该字符串放入记录器,然后用它进行搜索等。。细节有些不重要 因此,它不断抛出一个“索引超出了数组的边界”错误,即使出于测试目的,我在使用字符串数组之前手动设置了它 args[0] = "{XXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}"; logger.Info("guid:" + args[0]); //Errors he

这是一个非常奇怪的问题,有点难以解释,所以请和我在一起

我有一些非常基本的c#代码,它基于输入的字符串运行,然后将该字符串放入记录器,然后用它进行搜索等。。细节有些不重要

因此,它不断抛出一个“索引超出了数组的边界”错误,即使出于测试目的,我在使用字符串数组之前手动设置了它

args[0] = "{XXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}";
logger.Info("guid:" + args[0]); //Errors here
 _fetchxml = _myApp.getFetchXml("fileguid", args[0], new Guid(), new Guid());
我甚至试着在记录器前面放一行,上面写着
var a=“a”
,它在那行上给出了相同的错误,这让我觉得这是与构建有关的

我已经清理并重建了解决方案,但运气不佳,希望这是有意义的。

数组是不可变的(即固定大小),因此如果数组的长度为零,如果您尝试添加字符串并将其分配到第一个位置(不存在),它将抛出异常

正如注释中所建议的,您可以通过添加一个if块来确认args.Length是否确实为0:

if(args.Length > 0)
{
    args[0] = "{XXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}";
    logger.Info("guid:" + args[0]); //No more Errors here?
    _fetchxml = _myApp.getFetchXml("fileguid", args[0], new Guid(), new Guid());
}
else 
{ 
    logger.Info("guid: --no arguments found--"); 
    // or if _fetchxml is crucial:
    throw new ArgumentException("No guid given");
}
或者,如果仅用于测试,则可以完全替换args阵列:

args = new[] { "{XXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}" };

或者更好的方法是,在“命令行参数”中的“开始选项”下的项目属性的“调试”部分设置参数(当然,假设这些确实是命令行参数)。

如果放置
debug.WriteLine(args.Length),会发生什么情况在这些代码行之前?它抛出相同的错误异常,但在
Debug.WriteLine
Line上,没有调试输出?如果是这样,那么异常完全是从其他地方抛出的。logger是您编写的自定义类的对象吗?如果是这样,请在Info方法中添加一个try-catch,并查看异常是否确实在记录器中引发。抱歉,但是如何声明和启动
args[]
?您是说
args
Main
函数吗?您是否尝试过使用:
if(args==null | | args.Length==0)