MSBuild говорит, что мне нужен метод Main для компиляции библиотеки

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

Решение

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

Изменить вас <Csc сделайте следующее:

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

Из MSDN re TargetType:

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

Другие вопросы по тегам