MSBuild说我需要一个用于库编译的Main方法

时间:2011-12-14 00:18:56

标签: c# msbuild csc

我正在尝试使用MSBuild来编译我的ASP.NET MVC3应用程序。由于DLL不需要Main方法,并且我已指定目标是库,为什么编译器会抛出以下异常:

CSC : error CS5001: Program 'c:\MvcApplication1\web\bin\MvcApplication1.dll' does not contain a static 'Main' method suitable for an entry point[C:\MvcApplication1\web\MvcApplication1.csproj]

这是.csproj文件:

<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

    <PropertyGroup>
        <OutputType>Library</OutputType>
        <AssemblyName>MvcApplication1</AssemblyName>
        <OutputPath>bin\</OutputPath>
    </PropertyGroup>

    <ItemGroup>
        <Compile Include="*.cs" />
    </ItemGroup>

    <ItemGroup>
        <Reference Include="..\lib\*.dll" />
    </ItemGroup>

    <Target Name="Build">
        <MakeDir Directories="$(OutputPath)" Condition="!Exists('$(OutputPath)')" />
        <Csc References="@(Reference)" Sources="@(Compile)" OutputAssembly="$(OutputPath)$(AssemblyName).dll" />
        <Copy SourceFiles="@(Reference)" DestinationFolder="$(OutputPath)" />
    </Target>

</Project>

1 个答案:

答案 0 :(得分:1)

Csc应该TargetType library。默认值应该是Library(参见下面的MSDN),尽管在这种情况下似乎并非如此。

按如下方式更改<Csc步骤:

<Csc TargetType="library" References="@(Reference)"  ....  />

来自MSDN重新 TargetType

  

指定输出文件的文件格式。这个参数可以有   一个库的值,它创建一个代码库,exe,它创建一个   控制台应用程序,模块,创建模块,或winexe,其中   创建一个Windows程序。默认值为library。更多   信息,请参阅/ target(C#编译器选项)。