gpt4 book ai didi

c# - 运行时程序集位置更改

转载 作者:太空宇宙 更新时间:2023-11-03 16:20:30 25 4
gpt4 key购买 nike

我正在运行编码的 ui 自动化并定义了一个名为 [ExternalDataSource()] 的方法属性来读取文档(csv、xml...)并将数据解析到一些字典中。我将其复制到这里,以便您可以更好地了解:

[System.AttributeUsage(System.AttributeTargets.Method)]
public class ExternalDataSource : System.Attribute
{
public ExternalDataSource(string filename)
{
DirectoryInfo di = new DirectoryInfo(Assembly.GetExecutingAssembly().Location);

string file = Path.Combine(Path.GetDirectoryName(di.FullName), filename);

try
{
code
}
catch (Exception)
{
throw new UITestException("Cannot load data source document");
}
}
}

在其中,我尝试访问 Assembly.GetExecutingAssembly().Location 以获取复制到 TestResult/Out 文件夹的文件。我在整个应用程序中仅将此属性分配给了一个 TestMethod(),在调试时,我发现应用程序两次进入该属性的 c'tor。两次 Location 都不一样。一次来自 bin/Debug 文件夹,另一次来自 TestResults/Out 文件夹。两个问题:

  1. 如果我在我的应用程序中只调用一次该属性,为什么调试器会输入该属性两次?
  2. 为什么同一个程序集的位置会发生变化?

最佳答案

好吧,似乎没有人有答案,但是在使用 mstest.exe 和 vs2012 JIT Debugger 从命令行调试运行时,我发现了一件奇怪的事情:

当将 System.Diagnostics.Debugger.Break() 放入此属性所在的类中时,抖动是从 MSTest.exe 调用的,但是当此断点位于用这个属性修饰的testmethod,调用了QTAgent32.exe。我已经实现了一个单例类来处理我的参数,虽然它由 MSTest 填充到此属性的 ExternalDataSource 中,但在进入 QTAgent32(测试)时它是空的。

对我有用的解决方案只是用 [TestInitialize()] 上的数据初始化 Singleton。

希望这对某人有帮助。

关于c# - 运行时程序集位置更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14057028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com