CodeDomProviderによるWindowsアプリケーションの生成
- 題名: CodeDomProviderによるWindowsアプリケーションの生成
- 著者: せいじ
- 日時: 2007/02/06 5:02:16
- ID: 19027
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: CodeDomProviderによるWindowsアプリケーションの生成
- 著者: せいじ
- 日時: 2007/02/06 12:38:39
- ID: 19032
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: CodeDomProviderによるWindowsアプリケーションの生成
- 著者: せいじ
- 日時: 2007/02/18 14:12:05
- ID: 19110
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[5]: CodeDomProviderによるWindowsアプリケーションの生成
- 著者: せいじ
- 日時: 2007/02/18 18:55:06
- ID: 19112
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
【解決したい問題】
CodeDomProviderによるvb.netのコンパイラーを作成しています。
Windowsアプリケーションをコンバイルしたいのですが
CompilerParametersの.GenerateExecutableをTrueにしても
コマンドラインの実行ファイルしか作成できません。
Windowsアプリケーションをコンパイルする方法があれば、教えてください。
【解決するために何をしたか】
CodeDomProviderで生成されるコマンドを覗いたところ
vbc.exe /t:exeとなっています。これが/t:winとなればWindowsアプリケーションが作成されることは知っています。
コマンドラインを書き、shell()で実行する方法であれば、できるのかなぁと想像しています。しかし、CodeDomProviderで実現できれば、後からの変更も簡単なため、そちらの方法を探しています。
【追加事項】
コードは、tipsにあったものを利用しています。
なお、2つのファイル(FileID,FileName)を埋め込んでいます。
'CodeProviderクラスはSystem.CodeDom.Compiler.CodeDomProviderの派生クラス
Dim codeProvider As System.CodeDom.Compiler.CodeDomProvider
' VBのCodeProviderインスタンス作成
codeProvider = New Microsoft.VisualBasic.VBCodeProvider
' 作成したCodeProviderから、ICodeCompilerインターフェイスを取得
'Dim codeCompiler As System.CodeDom.Compiler
'codeCompiler = codedomProviderpiler
' コンパイラパラメータ
Dim compilerParameters As New System.CodeDom.Compiler.CompilerParameters
With compilerParameters
'参照するdllを設定する
.ReferencedAssemblies.Add("System.dll")
.ReferencedAssemblies.Add("System.Data.dll")
.ReferencedAssemblies.Add("System.Deployment.dll")
.ReferencedAssemblies.Add("System.Drawing.dll")
.ReferencedAssemblies.Add("System.Windows.Forms.dll")
.ReferencedAssemblies.Add("System.Xml.dll")
'埋め込みリソース
.EmbeddedResources.Add(InputFilePath)
.EmbeddedResources.Add(Directory.GetCurrentDirectory & "\FileId")
.EmbeddedResources.Add(Directory.GetCurrentDirectory & "\FileName")
' 実行可能ファイルを作成する
.GenerateExecutable = True
' 出力ファイルを設定
.OutputAssembly = strOutputAssembly
' デバッグ情報を含めない
.IncludeDebugInformation = True
End With
' コンパイル結果を取得するためのクラス ( CompileAssemblyFromSource()メソッドの戻り値 )
Dim compilerResults As System.CodeDom.Compiler.CompilerResults
Try
' コンパイル開始 ( ファイルからコンパイルする場合はCompileAssemblyFromFile()メソッドを用いる )
compilerResults = codeProvider.CompileAssemblyFromSource(compilerParameters, strSourceCode)
Catch ex As Exception
' 出力ペインに表示
Return ("例外がスルーされました。" + vbNewLine + ex.Message)
End Try