Публикация моего приложения MVP asp.net через скрипт, а не Visual Studio - PullRequest
2 голосов
/ 18 июля 2011

Я не очень-то знаю об этом, чтобы быть честным с тобой ...

Мне удалось загрузить сборку mscommunity, и мне удалось использовать приведенный ниже скрипт для успешной компиляции и сборки моего приложения, однако я хочу, чтобы мое приложение asp.net mvc было «опубликовано», поэтому мне нужны те же файлы, что и вы, когда нажав «опубликовать» внутри визуальной студии. Мой текущий файл сборки выглядит так:

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
     <!-- Import the MSBuild Tasks -->
  <Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration>
    <ClassLibraryOutputDirectory>c:\publish\</ClassLibraryOutputDirectory>
    <ProjectDir>..\PetProject\</ProjectDir >
    <ProjectTestDir>$(ProjectDir)PetProject.WebUI\</ProjectTestDir >
    <ProjectFile>$(ProjectDir)PetProject.sln</ProjectFile >
    <TestProjectFile>$(ProjectTestDir)PetProject.WebUI.csproj</TestProjectFile >
  </PropertyGroup>

  <!-- Build projects by calling the Project files generated by VS -->
  <Target Name="Build">
    <MSBuild Projects="$(ProjectFile)" />
    <MSBuild Projects="$(TestProjectFile)" />
  </Target>

</Project>

Я вызываю это в командной строке, используя:

C:\Windows\Microsoft.NET\Framework\v3.5>msbuild.exe C:\Projects\PetProject\build
\PetProject.build

Помощь очень ценится ...

ПРИМЕЧАНИЕ: я хочу избегать CI, Nant и т. Д., Потому что я действительно не знаю, что это такое, и в идеале я хочу, чтобы вышеперечисленное работало как First Base, а затем перейти к другим вещам, таким как CI или что-то еще, я не хочу слишком сильно путаюсь ...

1 Ответ

4 голосов
/ 19 июля 2011

Это должно дать вам тот же результат, что и публикация из Visual Studio:

<Project DefaultTargets="BuildAndPublish" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets" />

    <PropertyGroup>
        <ProjectFile>C:\PetProject\PetProject.csproj</ProjectFile >
        <OutDir>C:\PetProject\MyPublish</OutDir>
    </PropertyGroup>

    <Target Name="BuildAndPublish">
        <MSBuild Projects="$(ProjectFile)" Targets="Package" Properties="Configuration=Release;PackageLocation=$(OutDir)\MSDeploy\Package.zip;_PackageTempDir=$(OutDir)\Temp" />
    </Target>

</Project>

для вашего проекта.

Не забудьте импортировать Microsoft.Web.Publishing.targets, который содержит цель Package (которую я смешал с Publish в своем первоначальном ответе).

Если вы хотите построить свое решение, ваш скрипт должен выглядеть примерно так:

<Project DefaultTargets="BuildAndPublish" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets" />

    <PropertyGroup>
        <OutDir>C:\PetProject\MyPublish\</OutDir>
    </PropertyGroup>

    <ItemGroup>
        <Solution Include="C:\PetProject\PetProject.sln">
            <Properties>
                OutDir=$(OutDir);
                Platform=Any CPU;
                Configuration=Release;
                DeployOnBuild=True;
                DeployTarget=Package;
                PackageLocation=$(OutDir)\MSDeploy\Package.zip;
                _PackageTempDir=$(OutDir)\Temp
            </Properties>
        </Solution>
    </ItemGroup>

    <Target Name="BuildAndPublish">
        <MSBuild Projects="@(Solution)" />
    </Target>

</Project>

Есть сообщение в блоге Code Inside , которое описывает в основном тот же подход, но не работает, когда я попробовал его в своей среде.

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