我有一个用 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/