3
當我嘗試編譯併發出使用羅斯林以下VB.NET代碼,想念我的命名空間羅斯林VB.NET
Module Module1
Sub Main()
Console.WriteLine(My.Application.Info.AssemblyName)
End Sub
End Module
我收到以下錯誤
error BC30451: 'My' is not declared. It may be inaccessible due to its protection level.
MSDN mentions是我的命名空間由編譯器根據_MYTYPE條件編譯常量的值添加。
在羅斯林那一切我的魔法不再可用,是嗎?
我的代碼:
Imports Microsoft.CodeAnalysis
Imports Microsoft.CodeAnalysis.VisualBasic
Imports Microsoft.VisualBasic.CompilerServices
Module Module1
Sub Main()
Dim code = "Module Module1" + Environment.NewLine +
"Sub Main()" + Environment.NewLine +
"System.Console.WriteLine(My.Application.Info.AssemblyName)" + Environment.NewLine +
"End Sub" + Environment.NewLine +
"End Module"
Dim tree = VisualBasicSyntaxTree.ParseText(code)
Dim compilation = VisualBasicCompilation.Create("test").
AddSyntaxTrees(tree).
AddReferences(MetadataReference.CreateFromFile(GetType(Object).Assembly.Location)).
AddReferences(MetadataReference.CreateFromFile(GetType(StandardModuleAttribute).Assembly.Location))
Dim emitResult = compilation.Emit("test.exe")
If Not emitResult.Success Then
Console.Write(String.Join(Environment.NewLine, emitResult.Diagnostics))
End If
Console.ReadLine()
End Sub
End Module
你加什麼參考? –
@ KevinPilch-Bisson mscorlib和Microsoft.VisualBasic.dll –
我相信My.Application的東西是特定於Winforms和WPF的,所以你必須從那裏獲得一些參考。 –