Visual Studio 2010:如何使用MSBUILD将ASP.NET Web应用发布到目标文件夹?

| 在Visual Studio 2010中,您知道如何更改配置(调试,发布等),在解决方案资源管理器中右键单击一个项目,单击“发布”,并将所选配置的所有重要的Web应用程序项目文件复制到目标文件夹以及经过xdt转换的web.config?好吧,我正在寻找与之完全相同的MSBUILD。 我面临的挑战:在命令提示符处提供我需要执行的“单行”以完成此操作。没有第三方程序。没有教学影片。我可以直接从您的响应中直接复制一个简单的命令,粘贴到命令窗口中,根据需要进行修改以支持我的目录结构,然后按Enter。 如果不是,那么也许有人可以提供一个指向完整MSBUILD参考的链接,该参考显示了我可以在命令行中使用的每个命令,开关和值。     
已邀请:
将以下内容放入“ 0”文件(根据需要更改“ 1”):
<?xml version=\"1.0\" encoding=\"utf-8\" ?>
<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\" DefaultTargets=\"Publish\"> 
    <PropertyGroup>
        <ProjectFile>Path\\To\\Web.csproj</ProjectFile>
        <PublishDir>Path\\For\\Publish\\Output</PublishDir>
        <TempDir>Path\\To\\Temp\\Folder</TempDir>
        <BuildConfig>Release|Debug</BuildConfig>
    </PropertyGroup>

    <Target Name=\"Publish\">
        <MSBuild Projects=\"$(ProjectFile)\"
                 Properties=\"Configuration=$(BuildConfig);WebProjectOutputDir=$(PublishDir);OutDir=$(TempDir)\\;BuildingProject=true\"
                 Targets=\"ResolveReferences;_CopyWebApplication\" />
    </Target>
</Project>
从命令行(或
.bat
文件)调用此方法可以解决问题:
%windir%\\Microsoft.NET\\Framework\\v4.0.30319\\MSBuild.exe ProjectPublish.MSBuild.xml
    
这些个月来,我找到了我一直在寻找的解决方案 如果上面的链接变坏了,这就是它所说的内容: 卸载然后编辑您的项目文件。查找将Microsoft.WebApplication.targets导入的行。看起来像:
<Import Project=\"$(MSBuildExtensionsPath32)\\Microsoft\\VisualStudio\\v10.0\\WebApplications\\Microsoft.WebApplication.targets\" />
在该行下面,粘贴以下XML:
<Target Name=\"PublishToFileSystem\" DependsOnTargets=\"PipelinePreDeployCopyAllFilesToOneFolder\">
    <Error Condition=\"\'$(PublishDestination)\'==\'\'\" Text=\"The PublishDestination property must be set to the intended publishing destination.\" />
    <MakeDir Condition=\"!Exists($(PublishDestination))\" Directories=\"$(PublishDestination)\" />

    <ItemGroup>
        <PublishFiles Include=\"$(_PackageTempDir)\\**\\*.*\" />
    </ItemGroup>

    <Copy SourceFiles=\"@(PublishFiles)\" DestinationFiles=\"@(PublishFiles->\'$(PublishDestination)\\%(RecursiveDir)%(Filename)%(Extension)\')\" SkipUnchangedFiles=\"True\" />
</Target>
现在,在与项目文件相同的文件夹中的命令提示符下运行此命令:
msbuild TestWebApp.csproj \"/p:Platform=AnyCPU;Configuration=Debug;PublishDestination=C:\\pub\" /t:PublishToFileSystem
请记住在命令中指定MSBUILD的路径,或将路径添加到全局路径环境变量中(这是我所做的)。在我的机器上,它在这里:
C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319
为了测试这一点,我在Web.Release.config中放置了一个配置转换,以添加一个AppSetting密钥(如果执行此操作,请确保基本配置文件中存在AppSettings节点,否则会出现错误)。当我使用上述命令构建调试配置时,该密钥未按预期出现在发布的配置文件中。但是,当我使用发布配置时,密钥已成功添加到文件中。 我真的希望Microsoft不会混淆这一切。无论如何,这是我在互联网上任何地方都能找到的最简单的解决方案。希望对您的其他人有帮助。     

要回复问题请先登录注册