使用资源在运行时编译VB.NET项目

时间:2009-09-22 02:54:25

标签: vb.net compiler-construction resources

我的应用程序将一组VBScripts(UTF8文本文件)捆绑到一个VB.NET程序集中。我曾经把脚本代码作为String成员嵌入到类中,但事实证明这是一个糟糕的设计。我想把它们作为资源包括在内。向CompilerParams添加资源的最佳方法是什么?

到目前为止我所做的事情(不包括所有错误检查):

  Dim comParams As New CompilerParameters()
  comParams.OutputAssembly = DLL_Path
  comParams.ReferencedAssemblies.Add("System.dll")
  comParams.ReferencedAssemblies.Add("System.Windows.Forms.dll")
  comParams.ReferencedAssemblies.Add("System.Drawing.dll")
  comParams.ReferencedAssemblies.Add("mscorlib.dll")
  comParams.ReferencedAssemblies.Add(RhinoDotNETSDKPath)

  comParams.WarningLevel = 3
  comParams.CompilerOptions = "/target:library /optimize"

  comParams.GenerateExecutable = False
  comParams.GenerateInMemory = False

  Dim iCode As String = Me.DotNETSource

  Dim iProvider As CodeDomProvider = CodeDomProvider.CreateProvider("VB")
  comResult = iProvider.CompileAssemblyFromSource(comParams, New String() {iCode})

CompilerParameters包含EmbeddedResources和LinkedResources的字段,但是从我发现的示例到目前为止这些似乎只与框架资源有关???

1 个答案:

答案 0 :(得分:1)

您刚试过EmbeddedResources属性吗?

Dim resources As new StringCollection
resources.Add("foo/bar.txt")
resources.Add("data/file.xml")
comParams.EmbeddedResources = resources

我还没有检查(很快就会这样做),但我认为应该可以正常工作。如果它对您不起作用,请在尝试时详细说明出现了什么问题。

我相信如果你想在程序集中更改名称,你可以使用类似的东西:

resources.Add("foo/bar.txt,testdata.bar.txt")