Исключить папку из сборки сайта с помощью MSBuild - PullRequest
2 голосов
/ 20 августа 2009

Мы используем MSBuild для создания наших решений через CruiseControl. У нас есть несколько сборок и веб-сайт как часть решения. Сборка через VS2008 сборка прошла успешно. Однако в окне сборки мы получаем следующую ошибку.

ASPNETCOMPILER (,):

        errorASPCONFIG: The CodeDom provider type "Microsoft.VJSharp.VJSharpCodeProvider, VJSharpCodeProvider, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" could not be located.

Причина этого в том, что в папке scripts на сайте у нас есть пара файлов с расширением .java. Мы не хотим, чтобы эти файлы создавались. И действительно, нам ничего не нужно в встроенной папке скриптов.

Есть ли способ исключить создание папки или расширения внутри проекта веб-сайта? Или попросите MSBuild следовать тем же правилам, которые использует VS2008, чтобы решить, что компилировать?

Ответы [ 3 ]

1 голос
/ 23 августа 2009

Для этого вы можете использовать Проекты веб-развертывания . В WDP вы можете использовать элемент ExcludeFromBuild, чтобы исключить эти файлы. Для получения дополнительной информации см http://msdn.microsoft.com/en-us/library/aa479568.aspx.

1 голос
/ 30 августа 2011

Вы можете удалить целые папки с атрибутом Remove элемента Item ( краткое введение в MSDN ).

Например, если у вас есть элементы, определенные следующим образом:

<ItemGroup>
    ...
    <Compile Include="Tests\Test1.cs" />
    <Compile Include="Tests\SubTests\SubTest1.cs" />
    ...
</ItemGroup>

и вы хотите исключить все классы из папки «Тесты», вы можете определить задачу в конце вашего проекта:

    ...
    <PropertyGroup>
        <CoreCompileDependsOn>$(CoreCompileDependsOn);ExcludeTestsFolder</CoreCompileDependsOn>
    </PropertyGroup>
    <Target Name="ExcludeTestsFolder">
        <ItemGroup>
            <Compile Remove="Tests\**\*.cs" />
        </ItemGroup>
    </Target>
</Project>

Также неплохо определить такую ​​задачу во внешнем файле и импортировать ее с элементом Импорт (подробное объяснение в другом потоке ).

0 голосов
/ 20 августа 2009

Внутри файла сборки будет группа элементов с соответствующими элементами. Просто отредактируйте файл, чтобы исключить этот элемент.

Для Пример :

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <ItemGroup>
        <Res Include = "Strings.fr.resources" >
            <Culture>fr</Culture>
        </Res>
        <Res Include = "Dialogs.fr.resources" >
            <Culture>fr</Culture>
        </Res>

        <CodeFiles Include="**\*.cs" Exclude="**\generated\*.cs" />
        <CodeFiles Include="..\..\Resources\Constants.cs" />
    </ItemGroup>
...
</Project>

Редактировать: Исправление для ответа на комментарий.

Если у вас есть только файл sln, не могли бы вы создать сценарий meta msbuild, который убирает файлы с пути, вызывает задачу для построения решения и затем возвращает их обратно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...