Как использовать MSBuild в проекте C # без компилируемого кода

У меня есть проект веб-приложения C #, в котором на самом деле нет ASP.Net или C #. Это всего лишь одна html-страница с некоторыми Javascript, CSS и парой изображений.

Я хочу использовать MSBuild для развертывания версии этого приложения в выходной папке с минимизированными JS и CSS.

С помощью следующего кода я получаю сообщение об ошибке «CSC: фатальная ошибка CS2008: не указаны входные данные». Я предполагаю, потому что на самом деле нет кода C # для компиляции, но я не уверен.

<?xml version="1.0" encoding="utf-8" ?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
    <PropertyGroup>
        <CssTidy>..\build_tools\csstidy.exe</CssTidy>
    </PropertyGroup>

    <PropertyGroup>
        <DeploymentFolder>Test\</DeploymentFolder>
        <SourceProject>..\..\Test\Test.csproj</SourceProject>
    </PropertyGroup>

    <Import Project="Common.Web.targets" />

    <ItemGroup>
        <CssFiles Include="..\..\Test\CSS\stylesheet.css" />
        <ScriptFiles Include="..\..\Test\JavaScript\javascript.js"/>
    </ItemGroup>

    <Target Name="compress_css">
        <Attrib Files="%(CssFiles.FullPath)" ReadOnly="false"/>
        <Exec Command="$(CssTidy) %(CssFiles.FullPath) %(CssFiles.FullPath) --template=highest" />
    </Target>

    <Target Name="compress_js">
        <Attrib Files="%(ScriptFiles.FullPath)" ReadOnly="false"/>
        <JSCompress Files="%(ScriptFiles.FullPath)"></JSCompress>
    </Target>

    <Target Name="call_targets">
        <CallTarget Targets="compress_css"/>
        <CallTarget Targets="compress_js"/>
    </Target>
</Project> 

Как я могу этого добиться?


person Carter    schedule 19.11.2009    source источник
comment
Это помогает? stackoverflow.com/questions/986221/   -  person KMoraz    schedule 20.11.2009


Ответы (4)


Вы можете переопределить цель CoreCompile и ничего там не делать: <Target name="CoreCompile" />. Это пропустит свои действия и пойдет дальше. Возможно, вам придется переопределить дополнительные цели, чтобы избежать ошибок.

person Adam Fyles    schedule 20.11.2009
comment
Это был ключ для меня - я смог исправить, добавив ‹Target Name = CoreCompile /› ‹Target Name = CopyFilesToOutputDirectory /› Спасибо - person antlersoft; 16.06.2011
comment
Если это решило вашу проблему, почему вы не отметили этот ответ? - person Bojan Bjelic; 31.10.2011
comment
Добавив ‹Target Name = CoreCompile /› в мой файл .csproj, я теперь получаю эту ошибку: Невозможно скопировать файл obj \ Release \ MyProject.dll в. \ MyProject.dll. Не удалось найти файл obj \ Release \ MyProject.dll. Похоже, что проект все еще пытается скопировать сборку в выходной путь в свойствах проекта. Что еще нужно сделать, чтобы это остановить? - person Laurence; 05.01.2012

Вверху файла стоит DefaultTargets = "Build"

Измените "Build" на "call_targets", и все будет в порядке.

person Reza    schedule 07.12.2009

Что находится внутри common.web.targets? Я предполагаю, что ошибка генерируется целью в этом файле (или другом, который он импортирует).

person Sayed Ibrahim Hashimi    schedule 20.11.2009

Быстрое решение этой проблемы - добавить в проект фиктивную страницу. После этого сборка будет работать.

person Pratik    schedule 24.08.2012