c# - 使用 msbuild 执行文件系统发布配置文件

标签 c# visual-studio msbuild publish

我有一个用 VS2010 创建的 c# .Net 4.0 项目,现在可以用 VS2012 访问。

我正在尝试仅将需要的文件从该网站发布到目标位置 (C:\builds\MyProject[Files])

我的文件结构: ./ProjectRoot/MyProject.csproj ./ProjectRoot/Properties/PublishProfiles/FileSystemDebug.pubxml

我正在通过 MSBuild 运行以下命令:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe ./ProjectRoot/MyProject.csproj/p:DeployOnBuild=true/p:PublishProfile=./ProjectRoot/Properties/PublishProfiles/FileSystemDebug.pubxml

这是 FileSystemDebug.pubxml 中的 xml

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>FileSystem</WebPublishMethod>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish />
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <publishUrl>C:\builds\MyProject\</publishUrl>
    <DeleteExistingFiles>True</DeleteExistingFiles>
  </PropertyGroup>
</Project>

结果是:

  • 在此处创建一个 zip 文件:./ProjectRoot/obj/Debug/Package/MyProject.zip
  • 没有部署到 <publishUrl>C:\builds\MyProject\</publishUrl> 卧槽
  • 创建的 zip 文件是一份 pig 早餐,其中包含应用程序不需要的文件。

当我通过 visual studio 运行此发布配置文件时,会在 *C:\builds\MyProject* 中创建一个文件夹,其中包含我想要的确切工件。

我如何从 msbuild 获得这个简单的结果?

最佳答案

仅供引用:我在 Visual Studio 2015 中遇到了同样的问题。经过数小时的尝试,我现在可以执行 msbuild myproject.csproj/p:DeployOnBuild=true/p:PublishProfile=myprofile

我必须编辑我的 .csproj 文件才能使其正常工作。它包含这样一行:

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" 
  Condition="false" />

我将这一行更改如下:

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v14.0\WebApplications\Microsoft.WebApplication.targets" />

(我将 10.0 更改为 14.0,不确定是否有必要。但我确实必须删除条件部分。)

关于c# - 使用 msbuild 执行文件系统发布配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16246562/

相关文章:

xml - 使用通配符将项目组转换为另一个项目组

c# - 缓存页面的仅限管理员内容

c# - 在哪里最好删除 ASP.net 应用程序中的临时文件?

c# - 如何在一个元素(Gridview)上绑定(bind)多个数据?

c# - 什么是 .csdproj 文件?

git - 如何在我的PS脚本中获取Git commit哈希?

c# - LINQ 查询除了不起作用,List<long?> 与 List<long>

c# - Windows Azure - Azure 网站可以运行 native C++ 代码吗?

c++ - libcurl curl_easy_setopt 长参数未正确传递 - va_arg(param, long)

.net - NuGetPackageImportStamp 的用途是什么?