我正在构建一个库,其中包含很多用于我使用的各种代码的包装器。
我的图书馆代码:
public static void Create(string name, string location, List<string> commands)
{
if (!Directory.Exists(location))
{
throw new DirectoryNotFoundException();
}
else
{
File.WriteAllLines(Path.Combine(location, name), commands);
}
}
我的示例应用程序使用库
AwesomeFunction.Create("Foo", "C:\\DoesntExist\\Bar", new List<string> { "List of stuff" });
如果找不到给定的目录,它会抛出有意义的行throw new DirectoryNotFoundException();
,但我需要它来抛出AwesomeFunction.Create
函数。
如果它抛出,它将停止切换到库代码,而是突出显示VS中的AwesomeFunction
行。
一个类似的例子就是在
上抛出异常Directory.Delete("C:\\DoesntExist\\Bar");
即使throw
位于Directory
类中,它也会突出显示该行。
任何帮助表示感谢。
修改
如果我将库复制到另一个位置,即C:\ mylibrary,它仍会打开它的源代码,即使我没有通过项目引用它。
我发现另一个问题是,当我不从我的项目中添加它时,我没有看到我对函数的XML注释。
有什么想法吗?
答案 0 :(得分:3)
您可以通过使用程序集引用而不是库的项目引用来实现。这样你就不会在消费项目中拥有库的源代码,VS会在AwesomeFunction.Create
函数调用中断。这就是在您提供的Directory.Delete
调用中抛出异常时发生的情况。由于您没有链接此方法的源代码,因此VS只会在此行停止,而不会在此方法中的实际行上停止抛出异常。显然,在异常堆栈跟踪中,您将获得完整的方法调用堆栈和异常的来源。