2011-12-14 4 views
0

Я пытаюсь использовать MSBuild для компиляции моего приложения ASP.NET MVC3. Поскольку DLL файлы не требуется метод Main и я уточнил, что целью является библиотека, почему компилятор бросает следующее исключение:MSBuild говорит, что мне нужен основной метод для компиляции библиотеки

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 вновь TargetType:

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

+0

Да, я думаю, что я устанавливаю '/ цели: library' CSC переключатель с' библиотеки 'в моем файле .csproj. – nbsp

+0

Это TargetType на «Csc». Хотя он должен быть по умолчанию по умолчанию – DaveShaw

+0

@ nbsp Я обновил (и восстановил) свой ответ. – DaveShaw

 Смежные вопросы

  • Нет связанных вопросов^_^