codedom вызов сборки из сборки
Imports System
Imports System.CodeDom
Imports System.CodeDom.Compiler
Imports System.Collections
Imports System.ComponentModel
Imports System.Diagnostics
Imports System.Drawing
Imports System.IO
Imports System.Windows.Forms
Imports Microsoft.VisualBasic
Class test
Dim str_tb As String
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Call createtext()
Call createass()
End Sub
Private Sub createtext()
str_tb = "Imports System" & Chr(13) & Chr(10) & _
"Imports System.CodeDom" & Chr(13) & Chr(10) & _
"Imports System.CodeDom.Compiler" & Chr(13) & Chr(10) & _
"Imports System.Collections" & Chr(13) & Chr(10) & _
"Imports System.ComponentModel" & Chr(13) & Chr(10) & _
"Imports System.Diagnostics" & Chr(13) & Chr(10) & _
"Imports System.Windows.Forms" & Chr(13) & Chr(10) & _
"Imports System.Data" & Chr(13) & Chr(10) & _
"Imports System.Windows" & Chr(13) & Chr(10) & _
"Imports System.Data.SqlClient" & Chr(13) & Chr(10) & _
"Imports Microsoft.VisualBasic" & Chr(13) & Chr(10) & _
"Imports System.IO" & Chr(13) & Chr(10) & _
"Imports System.Drawing" & Chr(13) & Chr(10) & _
" <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _" & Chr(13) & Chr(10) & _
"Partial Class test" & Chr(13) & Chr(10) & _
" Inherits System.Windows.Forms.Form" & Chr(13) & Chr(10) & _
" <System.Diagnostics.DebuggerNonUserCode()> _" & Chr(13) & Chr(10) & _
" Protected Overrides Sub Dispose(ByVal disposing As Boolean)" & Chr(13) & Chr(10) & _
" Try" & Chr(13) & Chr(10) & _
" If Disposing AndAlso components IsNot Nothing Then" & Chr(13) & Chr(10) & _
" components.Dispose()" & Chr(13) & Chr(10) & _
" End If" & Chr(13) & Chr(10) & _
" Finally" & Chr(13) & Chr(10) & _
" MyBase.Dispose(Disposing)" & Chr(13) & Chr(10) & _
" End Try" & Chr(13) & Chr(10) & _
" End Sub" & Chr(13) & Chr(10) & _
" Private components As System.ComponentModel.IContainer" & Chr(13) & Chr(10) & _
" <System.Diagnostics.DebuggerStepThrough()> _" & Chr(13) & Chr(10) & _
" Private Sub InitializeComponent()" & Chr(13) & Chr(10) & _
" Me.Button1 = New System.Windows.Forms.Button" & Chr(13) & Chr(10) & _
" Me.SuspendLayout()" & Chr(13) & Chr(10) & _
" Me.Button1.Location = New System.Drawing.Point(114, 40)" & Chr(13) & Chr(10) & _
" Me.Button1.Name = " & Chr(34) & "Button1" & Chr(34) & "" & Chr(13) & Chr(10) & _
" Me.Button1.Size = New System.Drawing.Size(231, 39)" & Chr(13) & Chr(10) & _
" Me.Button1.TabIndex = 0" & Chr(13) & Chr(10) & _
" Me.Button1.Text = " & Chr(34) & "Button1" & Chr(34) & "" & Chr(13) & Chr(10) & _
" Me.Button1.UseVisualStyleBackColor = True" & Chr(13) & Chr(10) & _
" Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)" & Chr(13) & Chr(10) & _
" Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font" & Chr(13) & Chr(10) & _
" Me.ClientSize = New System.Drawing.Size(465, 133)" & Chr(13) & Chr(10) & _
" Me.Controls.Add(Me.Button1)" & Chr(13) & Chr(10) & _
" Me.Name = " & Chr(34) & "test" & Chr(34) & "" & Chr(13) & Chr(10) & _
" Me.Text = " & Chr(34) & "test" & Chr(34) & "" & Chr(13) & Chr(10) & _
" Me.ResumeLayout(False)" & Chr(13) & Chr(10) & _
" End Sub" & Chr(13) & Chr(10) & _
" Friend WithEvents Button1 As System.Windows.Forms.Button" & Chr(13) & Chr(10) & _
"End Class" & Chr(13) & Chr(10) & _
"Public Class test" & Chr(13) & Chr(10) & _
" Dim str_tb As String" & Chr(13) & Chr(10) & _
" Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click" & Chr(13) & Chr(10) & _
" Call createtext()" & Chr(13) & Chr(10) & _
" messagebox.show(str_tb)" & Chr(13) & Chr(10) & _
" Call createass()" & Chr(13) & Chr(10) & _
" End Sub" & Chr(13) & Chr(10) & _
" Private Sub createtext()" & Chr(13) & Chr(10) & _
" str_tb = " & Chr(34) & " <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _" & Chr(34) & " & Chr(13) & Chr(10) & _" & Chr(13) & Chr(10) & _
"" & Chr(34) & "Partial Class test" & Chr(34) & " & Chr(13) & Chr(10) & _" & Chr(13) & Chr(10) & _
"" & Chr(34) & " Inherits System.Windows.Forms.Form" & Chr(34) & " & Chr(13) & Chr(10) & _" & Chr(13) & Chr(10) & _
"" & Chr(34) & " <System.Diagnostics.DebuggerNonUserCode()> _" & Chr(34) & " & Chr(13) & Chr(10) & _" & Chr(13) & Chr(10) & _
"" & Chr(34) & " Protected Overrides Sub Dispose(ByVal disposing As Boolean)" & Chr(34) & " & Chr(13) & Chr(10) & _" & Chr(13) & Chr(10) & _
"" & Chr(34) & " Try" & Chr(34) & " & Chr(13) & Chr(10) & _" & Chr(13) & Chr(10) & _
"" & Chr(34) & " If Disposing AndAlso components IsNot Nothing Then" & Chr(34) & " & Chr(13) & Chr(10) & _" & Chr(13) & Chr(10) & _
"" & Chr(34) & " components.Dispose()" & Chr(34) & " & Chr(13) & Chr(10) & _" & Chr(13) & Chr(10) & _
"" & Chr(34) & " End If" & Chr(34) & " & Chr(13) & Chr(10) & _" & Chr(13) & Chr(10) & _
"" & Chr(34) & " Finally" & Chr(34) & " & Chr(13) & Chr(10) & _" & Chr(13) & Chr(10) & _
"" & Chr(34) & " MyBase.Dispose(Disposing)" & Chr(34) & " & Chr(13) & Chr(10) & _" & Chr(13) & Chr(10) & _
"" & Chr(34) & " End Try" & Chr(34) & " & Chr(13) & Chr(10) & _" & Chr(13) & Chr(10) & _
"" & Chr(34) & " End Sub" & Chr(34) & " & Chr(13) & Chr(10) & _" & Chr(13) & Chr(10) & _
"" & Chr(34) & " Private components As System.ComponentModel.IContainer" & Chr(34) & " & Chr(13) & Chr(10) & _" & Chr(13) & Chr(10) & _
"" & Chr(34) & " <System.Diagnostics.DebuggerStepThrough()> _" & Chr(34) & " & Chr(13) & Chr(10) & _" & Chr(13) & Chr(10) & _
"" & Chr(34) & " Private Sub InitializeComponent()" & Chr(34) & " & Chr(13) & Chr(10) & _" & Chr(13) & Chr(10) & _
"" & Chr(34) & " Me.Button1 = New System.Windows.Forms.Button" & Chr(34) & " & Chr(13) & Chr(10) & _" & Chr(13) & Chr(10) & _
"" & Chr(34) & " Me.SuspendLayout()" & Chr(34) & " & Chr(13) & Chr(10) & _" & Chr(13) & Chr(10) & _
"" & Chr(34) & " Me.Button1.Location = New System.Drawing.Point(114, 40)" & Chr(34) & " & Chr(13) & Chr(10) & _" & Chr(13) & Chr(10) & _
"" & Chr(34) & " Me.Button1.Name = " & Chr(34) & " & Chr(34) & " & Chr(34) & "Button1" & Chr(34) & " & Chr(34) & " & Chr(34) & "" & Chr(34) & " & Chr(13) & Chr(10) & _" & Chr(13) & Chr(10) & _
"" & Chr(34) & " Me.Button1.Size = New System.Drawing.Size(231, 39)" & Chr(34) & " & Chr(13) & Chr(10) & _" & Chr(13) & Chr(10) & _
"" & Chr(34) & " Me.Button1.TabIndex = 0" & Chr(34) & " & Chr(13) & Chr(10) & _" & Chr(13) & Chr(10) & _
"" & Chr(34) & " Me.Button1.Text = " & Chr(34) & " & Chr(34) & " & Chr(34) & "Button1" & Chr(34) & " & Chr(34) & " & Chr(34) & "" & Chr(34) & " & Chr(13) & Chr(10) & _" & Chr(13) & Chr(10) & _
"" & Chr(34) & " Me.Button1.UseVisualStyleBackColor = True" & Chr(34) & " & Chr(13) & Chr(10) & _" & Chr(13) & Chr(10) & _
"" & Chr(34) & " Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)" & Chr(34) & " & Chr(13) & Chr(10) & _" & Chr(13) & Chr(10) & _
"" & Chr(34) & " Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font" & Chr(34) & " & Chr(13) & Chr(10) & _" & Chr(13) & Chr(10) & _
"" & Chr(34) & " Me.ClientSize = New System.Drawing.Size(465, 133)" & Chr(34) & " & Chr(13) & Chr(10) & _" & Chr(13) & Chr(10) & _
"" & Chr(34) & " Me.Controls.Add(Me.Button1)" & Chr(34) & " & Chr(13) & Chr(10) & _" & Chr(13) & Chr(10) & _
"" & Chr(34) & " Me.Name = " & Chr(34) & " & Chr(34) & " & Chr(34) & "test" & Chr(34) & " & Chr(34) & " & Chr(34) & "" & Chr(34) & " & Chr(13) & Chr(10) & _" & Chr(13) & Chr(10) & _
"" & Chr(34) & " Me.Text = " & Chr(34) & " & Chr(34) & " & Chr(34) & "test" & Chr(34) & " & Chr(34) & " & Chr(34) & "" & Chr(34) & " & Chr(13) & Chr(10) & _" & Chr(13) & Chr(10) & _
"" & Chr(34) & " Me.ResumeLayout(False)" & Chr(34) & " & Chr(13) & Chr(10) & _" & Chr(13) & Chr(10) & _
"" & Chr(34) & " End Sub" & Chr(34) & " & Chr(13) & Chr(10) & _" & Chr(13) & Chr(10) & _
"" & Chr(34) & " Friend WithEvents Button1 As System.Windows.Forms.Button" & Chr(34) & " & Chr(13) & Chr(10) & _" & Chr(13) & Chr(10) & _
"" & Chr(34) & "End Class" & Chr(34) & "" & Chr(13) & Chr(10) & _
" End Sub" & Chr(13) & Chr(10) & _
" Dim objCodeCompiler As System.CodeDom.Compiler.CodeDomProvider = System.CodeDom.Compiler.CodeDomProvider.CreateProvider(" & Chr(34) & "VB" & Chr(34) & ")" & Chr(13) & Chr(10) & _
" Dim objCompilerParameters As New System.CodeDom.Compiler.CompilerParameters()" & Chr(13) & Chr(10) & _
" Dim asm As System.Reflection.Assembly" & Chr(13) & Chr(10) & _
" For Each asm In AppDomain.CurrentDomain.GetAssemblies()" & Chr(13) & Chr(10) & _
" objCompilerParameters.ReferencedAssemblies.Add(asm.Location)" & Chr(13) & Chr(10) & _
" Next" & Chr(13) & Chr(10) & _
" objCompilerParameters.CompilerOptions = " & Chr(34) & "/target:winexe /m:test" & Chr(34) & "" & Chr(13) & Chr(10) & _
" objCompilerParameters.OutputAssembly = " & Chr(34) & "test1.exe" & Chr(34) & "" & Chr(13) & Chr(10) & _
" objCompilerParameters.GenerateExecutable = True" & Chr(13) & Chr(10) & _
" objCompilerParameters.IncludeDebugInformation = False" & Chr(13) & Chr(10) & _
" Dim objCompileResults As System.CodeDom.Compiler.CompilerResults = _" & Chr(13) & Chr(10) & _
" objCodeCompiler.CompileAssemblyFromSource(objCompilerParameters, str_tb)" & Chr(13) & Chr(10) & _
" If objCompileResults.Errors.HasErrors Then" & Chr(13) & Chr(10) & _
" MsgBox(" & Chr(34) & "Error: Line>" & Chr(34) & " & objCompileResults.Errors(0).Line.ToString & " & Chr(34) & ", " & Chr(34) & " & _" & Chr(13) & Chr(10) & _
" objCompileResults.Errors(0).ErrorText)" & Chr(13) & Chr(10) & _
" Exit Sub" & Chr(13) & Chr(10) & _
" End If" & Chr(13) & Chr(10) & _
" Dim pri As New ProcessStartInfo(" & Chr(34) & "test1.exe" & Chr(34) & ")" & Chr(13) & Chr(10) & _
" Process.Start(pri)" & Chr(13) & Chr(10) & _
" End Sub" & Chr(13) & Chr(10) & _
"End Class"
End Sub
Private Sub createass()
Dim objCodeCompiler As System.CodeDom.Compiler.CodeDomProvider = System.CodeDom.Compiler.CodeDomProvider.CreateProvider("VB")
Dim objCompilerParameters As New System.CodeDom.Compiler.CompilerParameters()
Dim asm As System.Reflection.Assembly
For Each asm In AppDomain.CurrentDomain.GetAssemblies()
objCompilerParameters.ReferencedAssemblies.Add(asm.Location)
Next
objCompilerParameters.CompilerOptions = "/target:winexe /m:test"
objCompilerParameters.OutputAssembly = "test.exe"
objCompilerParameters.GenerateExecutable = True
objCompilerParameters.IncludeDebugInformation = False
Dim objCompileResults As System.CodeDom.Compiler.CompilerResults = _
objCodeCompiler.CompileAssemblyFromSource(objCompilerParameters, str_tb)
If objCompileResults.Errors.HasErrors Then
MsgBox("Error: Line>" & objCompileResults.Errors(0).Line.ToString & ", " & _
objCompileResults.Errors(0).ErrorText)
Exit Sub
End If
Dim pri As New ProcessStartInfo("test.exe")
Process.Start(pri)
End Sub
End Class
создать тестовый пример с этим кодом - двухминутное дело, у меня проект типа windows.forms, совместимость не имеет значения, у меня стоит 2.0, но подойдет любая, если дело в этом... огромная просьба подсказать или указать на ресурс, сам найти не смог - с английским не так все хорошо, как хотелось бы...
Удосужься оформить сообщение в соответствии с правилами оформления.