【问题标题】:Dynamic Compilation, ReferencedAssemblies.Add another Project动态编译,ReferencedAssemblies.添加另一个项目
【发布时间】:2012-12-13 02:56:18
【问题描述】:

将不胜感激这里的任何指针。

  • 我正在创建一个包含多个项目的解决方案。
  • 该解决方案包含我创建的各种类库(libCore、libApplication、libUser)。
  • 解决方案中的一个项目是 webApplication-A,它将动态编译一些 VB.Net 代码(来自用户的输入)。

问题:我不知道如何添加我的一个库的程序集以供动态代码使用,在本例中为 libUser.dll。

  • 我已经添加了 libUser 作为对 webApplication-A 项目(正在编译代码)的引用。
  • 我可以看到 libUser.dll 在项目的 Bin 目录中。

Dim voCompiler As New Microsoft.VisualBasic.VBCodeProvider
Dim voCompilerParams As New System.CodeDom.Compiler.CompilerParameters

voCompilerParams.ReferencedAssemblies.Add("mscorlib.dll")
voCompilerParams.ReferencedAssemblies.Add("libUser.dll") '<<=== Cannot load this assembly

【问题讨论】:

  • 请注意,您可能正在制造一个巨大的安全漏洞。

标签: vb.net dynamic reference class-library codedom


【解决方案1】:

您需要将完整路径传递给程序集:

voCompilerParams.ReferencedAssemblies.Add(GetType(SomeType).Assembly.Location)

【讨论】:

  • 啊……完整路径。我多么愚蠢:) 在这种情况下:voCompilerParams.ReferencedAssemblies.Add(Server.Mappath("Bin\libUser.dll"))
  • @JosephLee:我的方法更好;这意味着如果您重命名程序集,则不需要更新它。
猜你喜欢
  • 2023-03-28
  • 2020-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多