在没有Web开发项目目标的情况下构建ASP.net Web应用程序

时间:2013-12-13 17:05:26

标签: asp.net msbuild

在Web开发项目中是否有一种方法可以只复制ASP.net Web应用程序项目中没有Web开发项目目标的已更改文件?

所以,我的流程将如下所示:1。)仅编译以正确顺序更改/更新文件的应用程序(即在Web应用程序之前编译库项目,因为Web应用程序依赖于库),2 。)仅将更改的文件复制到Release文件夹。 3.)我想这样做而不必使用Web开发项目目标。我的Web开发项目配置文件如下所示:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>10.0.30319</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{399DEB82-5D44-466C-ADD5-D76F85A519D8}</ProjectGuid>
    <SourceWebPhysicalPath>..\Tracker_Web</SourceWebPhysicalPath>
    <SourceWebProject>{A2536EFD-8583-4C35-8F18-21F61DA861C3}|Tracker_Web\Tracker_Web.csproj</SourceWebProject>
    <SourceWebVirtualPath>/Tracker_Web.csproj</SourceWebVirtualPath>
    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <OutputPath>.\Debug</OutputPath>
    <EnableUpdateable>true</EnableUpdateable>
    <UseMerge>true</UseMerge>
    <SingleAssemblyName>Tracker_Web_Deploy</SingleAssemblyName>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugSymbols>false</DebugSymbols>
    <OutputPath>.\Release</OutputPath>
    <EnableUpdateable>true</EnableUpdateable>
    <UseMerge>true</UseMerge>
    <SingleAssemblyName>Tracker_Web_Deploy</SingleAssemblyName>
    <DeleteAppDataFolder>true</DeleteAppDataFolder>
</PropertyGroup>
<ItemGroup>
    <ExcludeFromBuild Include="$(SourceWebPhysicalPath)\**\obj\**\*.*" />
    <ExcludeFromBuild Include="$(SourceWebPhysicalPath)\**\Properties\**\*.*" />
    <ExcludeFromBuild Include="$(SourceWebPhysicalPath)\**\*.csproj*" />
    <ExcludeFromBuild Include="$(SourceWebPhysicalPath)\**\*.resx" />
    <ExcludeFromBuild Include="$(SourceWebPhysicalPath)\**\*.sln" />
    <ExcludeFromBuild Include="$(SourceWebPhysicalPath)\**\_svn\**\*.*" />
    <ExcludeFromBuild Include="$(SourceWebPhysicalPath)\**\.svn\**\*.*" />
    <ExcludeFromBuild Include="$(SourceWebPhysicalPath)\**\App_Data\**\*.*" />
    <ExcludeFromBuild Include="$(SourceWebPhysicalPath)\**\bin\**\*.pdb" />
    <ExcludeFromBuild Include="$(SourceWebPhysicalPath)\**\bin\**\*.xml" />
    <ExcludeFromBuild Include="$(SourceWebPhysicalPath)\bin\Tracker_Web_Deploy.*" />
    <ExcludeFromBuild Include="$(SourceWebPhysicalPath)\**\Exception*.aspx*" />
    <ProjectReference Include="..\Tracker_Web\Tracker_Web.csproj">
        <Project>{A2536EFD-8583-4C35-8F18-21F61DA861C3}</Project>
        <Name>Tracker_Web</Name>
    </ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Microsoft\WebDeployment\v10.0\Microsoft.WebDeployment.targets" />
<Target Name="BeforeBuild">
</Target>
<Target Name="BeforeMerge">
</Target>
<Target Name="AfterMerge">
</Target>
<Target Name="AfterBuild">
    <MakeDir Directories="$(OutputPath)\App_Data" />
    <RemoveDir Directories=".\Source" />
    <Message Text="Delete File: $(SourceWebPhysicalPath)\bin\Tracker_Web_Deploy.dll" Importance="high" />
    <Exec Command="del /F /Q $(SourceWebPhysicalPath)\bin\Tracker_Web_Deploy.dll" />
</Target>

我看到了如何使用MSBuild执行此操作,但没有使用Web开发项目。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果您使用的是VS2010,那么最新的Azure SDK版本中包含一个更好的发布向导。有关详细信息,请参阅here。它将Web部署项目的大部分功能带入Web应用程序项目本身。默认情况下,发布体验是增量的 - 您只会发布自上次发布以来已更改的文件。

从VS2012开始,Web部署项目已被弃用,因此无论何时更新VS版本,最终都会使用新向导。