Asp.net mvc 2 通过脚本而不是Visual Studio发布我的asp.net mvc应用程序

Asp.net mvc 2 通过脚本而不是Visual Studio发布我的asp.net mvc应用程序,asp.net-mvc-2,deployment,msbuild,Asp.net Mvc 2,Deployment,Msbuild,老实说,我对这件事不太了解 我已经成功下载了mscommunity build,并成功地使用下面的脚本编译和构建了我的应用程序,但是我想让我的asp.net mvc应用程序“发布”,所以我想要的文件与您在visual studio中单击“发布”时使用的文件相同。我当前的生成文件如下所示: <?xml version="1.0" encoding="utf-8"?> <Project DefaultTargets="Build" xmlns="http://schemas.mic

老实说,我对这件事不太了解

我已经成功下载了mscommunity build,并成功地使用下面的脚本编译和构建了我的应用程序,但是我想让我的asp.net mvc应用程序“发布”,所以我想要的文件与您在visual studio中单击“发布”时使用的文件相同。我当前的生成文件如下所示:

<?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>
<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>
非常感谢你的帮助


注意:我想避免使用CI、Nant等。因为我不知道它们是什么,我理想情况下希望将上述内容作为第一个基础,然后转到其他方面,如CI或其他任何东西,我不想太迷惑自己…

这应该会给您带来与在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>

有一种方法描述了基本相同的方法,但在我的环境中尝试时不起作用。

如何将发布目标输出到我的输出目录?我无法理解这一点…很抱歉,我的初始答案不起作用-我混淆了
发布
(它只适用于ClickOnce可部署项目和
。这很酷…我假设这要求服务器上安装visual studio?(我的服务器没有安装visual studio!)抱歉,我的应用程序是Asp.net MVC2,目标是Asp.net 3.5而不是4。0@Haroon我会看看我是否能用你的规格设置一个例子——在你的构建机器上没有VS应该是可能的。
<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>