首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VBC + NAnt。编译WinForm时出错

VBC + NAnt。编译WinForm时出错
EN

Stack Overflow用户
提问于 2009-01-06 16:43:42
回答 3查看 910关注 0票数 0

首先应该注意的是,我正在努力避免重写所有脚本以使用msbuild。

我注意到在VBC任务中使用NAnt和编译WinForms应用程序时会出现一些问题。主要的问题似乎是VBC找不到Sub Main。这很奇怪,因为在VS中,没有迹象表明我对vbc的调用和msbuild对vbc的调用之间有任何区别。

有没有人知道这个问题的解决方案,或者有没有办法强制创建MSBuild/VS可能正在生成或可能不会生成的其余部分类?

示例构建脚本:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8" ?>
<project xmlns="http://nant.sf.net/release/0.85/nant.xsd" name="Test" default="build">
    <target name="build">
        <vbc target="winexe" output="C:\Test.exe" main="WindowAppNantTest.My.MyApplication" verbose="true" rootnamespace="WindowAppNantTest">
            <imports>
                <import namespace="Microsoft.VisualBasic"/>
                <import namespace="System.Windows.Forms"/>
            </imports>
            <sources>
                <include name="**/**/*.vb"/>
            </sources>
        </vbc>
    </target>
</project>

错误: vbc vbc :错误BC30420:在'WindowAppNantTest.My.MyApplication‘中找不到'Sub Main’。

EN

回答 3

Stack Overflow用户

发布于 2009-01-06 17:19:32

问题似乎来自的主根命名空间属性。当您将它们切换为类似于以下内容时会发生什么:

代码语言:javascript
复制
<vbc target="winexe" output="C:\Test.exe" main="MyApplication" verbose="true" rootnamespace="WindowAppNantTest.My">
    <imports>
        <import namespace="Microsoft.VisualBasic"/>
        <import namespace="System.Windows.Forms"/>
    </imports>
    <sources>
        <include name="**/**/*.vb"/>
    </sources>
</vbc>

或者类似于以下内容:

代码语言:javascript
复制
<vbc target="winexe" output="C:\Test.exe" main="My.MyApplication" verbose="true" rootnamespace="WindowAppNantTest">
    <imports>
        <import namespace="Microsoft.VisualBasic"/>
        <import namespace="System.Windows.Forms"/>
    </imports>
    <sources>
        <include name="**/**/*.vb"/>
    </sources>
</vbc>
票数 1
EN

Stack Overflow用户

发布于 2011-01-28 07:13:39

我不确定您的意思是不想在NAnt中使用msbuild,还是不想批量切换到msbuild脚本。

如果是后者,那么我在你关于同一主题的其他帖子上的回复在这里也是有效的。

您可以在NAnt脚本中使用msbuild contrib (http://nantcontrib.sourceforge.net/)和NAnt。

msbuild任务的引用是:

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

和相关的代码片段:

代码语言:javascript
复制
<target name="build" depends="clean">
     <msbuild project="ProjectName.vbproj" />
</target>
票数 1
EN

Stack Overflow用户

发布于 2009-02-12 22:15:23

您需要做的是在VBC命令中设置以下内容:

代码语言:javascript
复制
<references>
  <include name="System.Windows.Forms.dll"/>
  <indlude name="Microsoft.VisualBasic.dll"/>
</references>

这应该可以解决您的问题。(我猜是第二个dll,因为我是CS专家)然而,编译的语法几乎是相同的。

在我工作过的所有项目中,你总是需要设置引用来包含任何动态链接库,无论它们是来自.Net,第三方还是你自己的(即项目引用),否则它们不会正确链接。

试一试,看看会发生什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/417261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档