【问题标题】:assembly loading problems using c# interactive使用 c# 交互的程序集加载问题
【发布时间】:2016-05-03 05:53:41
【问题描述】:

我有一个我想使用 c# 交互式探索的程序集。该程序集对其他程序集具有依赖性,并且在配置文件中使用了程序集重定向。其他程序集使用来自当前 appdomain 的数据进行设置。 现在这个程序集在不同的上下文(即不是 c# repl)中使用时可以正常工作。

如何在 c# repl 中模拟相同的上下文?

我得到的错误之一是 FileLoadException,因为我猜它没有找到某些程序集的正确版本。

我尝试过的:

  1. 使用 AppDomain.SetData 覆盖 AppDomain.CurrentDomain 属性。配置文件、应用程序库等。

  2. 在我的 csx 文件中,引用所有程序集。

  3. 将所有程序集复制到 C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\PrivateAssemblies

是否有关于如何在这种场景下使用 c# interactive 的信息?当我搜索它时,我得到的唯一信息是简单的教程。这甚至可能吗?

【问题讨论】:

  • 我没有使用过 c# 交互,但我想您需要将 dll 放入 .NET 将查找它的文件夹中。我认为c:\windows\system32 是它永远会出现的地方之一。您可以通过将 dll 复制到它来测试它。您也可以阅读此问题并尝试他们的答案(有点旧)stackoverflow.com/questions/1594214/c-custom-assembly-directory。您还可以在应用程序中调试和读取 Environment.CurrentDirectory 以查看它在哪个文件夹中运行并将 dll 放入该文件夹中。
  • 键入 #r fullpath 以引用 DLL。正常的 CLR 搜索规则对依赖项有效,因此您可能必须先引用它们。
  • @HansPassant 我已经使用了完整路径
  • 好吧,这对我们没有帮助,举一个常用库的具体示例。我们可以复制的。
  • @HansPassant 在我的情况下,所有库都是专有的,没有通用库。所以我不能举个例子。

标签: c# visual-studio roslyn interactive read-eval-print-loop


【解决方案1】:
  1. 在 Visual Studio 中打开开发者控制台。 (CTRL + Q > 开发者控制台 > Enter)
  2. 进入 App.Config 文件目录。 (cd C:\repos\PATH_YOUR_PROJECT)
  3. 写入 CSI 并按 ENTER。 (现在在 c# 交互式控制台中)
  4. 使用库注册 #r "C:\repos\PATH_YOUR_PROJECT\bin\Debug\MY_PROJECT.DLL"
  5. 然后编写代码并运行...

好锁...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 2011-05-11
    • 2015-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多