我的应用程序将一组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的字段,但是从我发现的示例到目前为止这些似乎只与框架资源有关???
答案 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")