MSBuild говорит, что мне нужен метод Main для компиляции библиотеки - PullRequest
0 голосов
/ 14 декабря 2011

Я пытаюсь использовать 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 Ответ

1 голос
/ 14 декабря 2011

Csc должно иметь TargetType из library.По умолчанию предполагается, что это библиотека (см. MSDN ниже), хотя в данном случае это не так.

Измените ваш <Csc шаг следующим образом:

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

От MSDN re TargetType :

Указывает формат файла выходного файла.Этот параметр может иметь значение library, которая создает библиотеку кода exe, которая создает консольное приложение, модуль, который создает модуль, или winexe, который создает программу Windows.Значением по умолчанию является библиотека.Для получения дополнительной информации см. / Target (Параметры компилятора C #).

...