2009-01-07 43 views
0

To an earlier question of mine, invovling VBC and NAnt with WinForms,我已经想出了一个更好的方式来说明这一点。命令行编译Settings.settings using VBC

在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 

怎样才能得到上面的发电机从命令行运行,或者是有一个电话的地方,将产生修正vbc.exe正确运行命令字符串所需的临时文件?

回答

4

在visual studio中查看构建字符串的问题是,它实际上并没有调用vbc.exe从Visual Studio构建。 Visual Studio中的所有内部版本都是使用内存中的编译器而不是命令行编译器(对于C#也是如此)。

看起来像vbc.exe ...的命令是一个生成的字符串,它并未实际执行。如果您想查找正确的字符串来构建您的项目,请从Visual Studio命令提示符处运行以下代码。

的MSBuild/V:诊断myproject.vbproj

这将产生一个MSBuild日志文件(这将是相当长的,所以我建议管道连接到文件)。构建完成后,在该文件中搜索vbc.exe。它将具有构建项目所需的实际命令行。

+0

该命令实际上是“msbuild/v:diag myproject.vbproj >> log.txt” 不是每个人都熟悉命令行打印:) – 2009-01-07 03:23:38

0

今天我花了一段时间的工作。我想知道如何让vbc编译器在“我的”名称空间方面正常工作的正确答案,但我设法使用NAnt contrib(http://nantcontrib.sourceforge。净/)。

NAnt contrib允许您使用.NET msbuild进行构建,它至少允许我设置自动构建,通知等。它不给予我想要的精确控制,但它符合其目的。

这项任务的参考是:

http://nantcontrib.sourceforge.net/release/latest/help/tasks/msbuild.html

而且从我的构建脚本相关片段:

<target name="build" depends="clean"> 
    <msbuild project="ProjectName.vbproj" /> 
</target> 

我使用恶性相当多的CS应用程序,但是这是VB.NET应用程序的第一个。