使用VBC的命令行编译Settings.settings
对于我之前的一个问题,涉及 VBC 和 NAnt 与 WinForms,我已经来了提出更好的方式来说明这一点。
在 vbproj 文件中,您有以下内容:
<ItemGroup>
<None Include="My Project\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<CustomToolNamespace>My</CustomToolNamespace>
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
</None>
</ItemGroup>
<ItemGroup>
<Content Include="My Project\Application.myapp">
<Generator>MyApplicationCodeGenerator</Generator>
<LastGenOutput>Application.Designer.vb</LastGenOutput>
</Content>
</ItemGroup>
当从 Visual Studio 中运行构建(调试详细程度设置为正常)时,生成的其中一行是:
Target CoreCompile:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Vbc.exe ...
其中包括 vbc.exe 运行所需的所有设置。 然而,从 Visual Studio 中获取该字符串,并直接在命令行上运行它会产生:
... My Project\Settings.Designer.vb(67) : error BC30002: Type 'My.MySettings' is not defined.
Friend ReadOnly Property Settings() As Global.My.MySettings
...\My Project\Settings.Designer.vb(69) : error BC30456: 'My' is not a member of '<Default>'.
Return Global.My.MySettings.Default
How does one get the 上述 Generators to run from a command line, or is there a call that will generated the right temp files that are required to vbc.exe 能否正确运行命令字符串?
To an earlier question of mine, invovling VBC and NAnt with WinForms, I have since come up with a better way of stating this.
Within vbproj file, you have the following:
<ItemGroup>
<None Include="My Project\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<CustomToolNamespace>My</CustomToolNamespace>
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
</None>
</ItemGroup>
<ItemGroup>
<Content Include="My Project\Application.myapp">
<Generator>MyApplicationCodeGenerator</Generator>
<LastGenOutput>Application.Designer.vb</LastGenOutput>
</Content>
</ItemGroup>
When one runs build from within Visual Studio (Debug Verbosity set to Normal), one of the lines produces is:
Target CoreCompile:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Vbc.exe ...
Which includes all of the settings required for vbc.exe to run. However, taking that string from Visual Studio, and running it directly on the command line yields:
... My Project\Settings.Designer.vb(67) : error BC30002: Type 'My.MySettings' is not defined.
Friend ReadOnly Property Settings() As Global.My.MySettings
...\My Project\Settings.Designer.vb(69) : error BC30456: 'My' is not a member of '<Default>'.
Return Global.My.MySettings.Default
How does one get the above Generators to run from a command line, or is there a call somewhere that will generate the correct temp files that are needed for vbc.exe to run the command string correctly?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在 Visual Studio 中查看构建字符串的问题在于,它实际上并未调用 vbc.exe 从 Visual Studio 进行构建。 Visual Studio 中的所有构建都使用内存编译器而不是命令行编译器进行(对于 C# 也是如此)。
看起来像 vbc.exe ... 的命令是一个生成的字符串,但实际上并未执行。 如果您想找到正确的字符串来构建项目,请从 Visual Studio 命令提示符运行以下代码。
msbuild /v:diag myproject.vbproj
这将生成一个 msbuild 日志文件(它会很长,所以我建议通过管道传输到一个文件)。 构建完成后,在该文件中搜索 vbc.exe。 它将具有构建项目所需的实际命令行。
The problem with looking at the build string within visual studio is that it's not actually calling vbc.exe to build from visual studio. All builds in visual studio happen with the in-memory compiler instead of the command line compiler (true for C# as well).
The command that looks like vbc.exe ... is a generated string that isn't actually executed. If you want to find out the correct string to build your project run the following code from a visual studio command prompt.
msbuild /v:diag myproject.vbproj
This will produce an msbuild log file (it will be quite long so I suggest piping to a file). Once the build is completed search for vbc.exe within that file. It will have the actual command line needed to build your project.
今天我花了一些时间来研究这个问题。 我想知道如何让 vbc 编译器在“My”命名空间中正常工作的正确答案,但我设法使用 NAnt contrib (http://nantcontrib.sourceforge) 让我的 NAnt 脚本正常工作。网/)。
NAnt contrib 允许您使用 .NET msbuild 进行构建,这至少允许我设置自动构建、通知等。它没有提供我想要的精细控制,但它达到了它的目的。
此任务的参考是:
http://nantcontrib.sourceforge.net/ release/latest/help/tasks/msbuild.html
以及我的构建脚本中的相关片段:
我在 CS 应用程序中使用了相当多的 NAnt,但这是 VB.NET 应用程序的第一次。
I spent a while working on this today. I'd like to know a proper answer as to how to get the vbc compiler to work properly in regard to the "My" namespace, but I managed to get my NAnt script working using NAnt contrib (http://nantcontrib.sourceforge.net/).
NAnt contrib allows you to build using the .NET msbuild, which at least allowed me to set up automated builds, notifications, etc. It does not give quite the granular control I would like, but it serves its purpose.
The reference on this task is:
http://nantcontrib.sourceforge.net/release/latest/help/tasks/msbuild.html
And the pertinent snippet from my build script:
I've used NAnt quite a bit for CS applications, but this is the first for a VB.NET application.