2011-12-14 5 views
0

私はASP.NET MVC3アプリケーションをコンパイルするためにMSBuildを使用しようとしています。ここでMSBuildは、ライブラリのコンパイルに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

Csc DLLのはMainメソッドを必要としないと、私はターゲットライブラリであることを指定しているので、なぜ次の例外をスローするコンパイラがありますTargetTypelibraryである必要があります。この場合、それはそうではないようですが、デフォルトはライブラリ(下のMSDNを参照)になっています。

変更します<Cscステップを次のようにMSDNから

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

TargetTypeに再:

出力ファイルのファイル形式を指定します。このパラメータは、 コンソールアプリケーションを作成するコードライブラリ、exe、モジュールを作成するモジュール、またはwineプログラムを作成するlibraryの値を とすることができます。 はWindowsプログラムを作成します。デフォルト値はlibraryです。 の詳細については、/ target(C#コンパイラオプション)を参照してください。

+0

はい、自分の.csprojファイルに ' Library 'という名前の'/target:library' cscスイッチを設定していると思います。 – nbsp

+0

これは "Csc"のTargetTypeです。それはライブラリでなければなりませんが、デフォルトでは – DaveShaw

+0

@nbsp私は自分の答えを更新しました(そして元に戻しませんでした)。 – DaveShaw