我有一个用VS2010创建的c#.Net 4.0项目,现在可以通过VS2012访问 .
我正在尝试仅将此网站所需的文件发布到目标位置 (C:\builds\MyProject[Files])
My file structure: ./ProjectRoot/MyProject.csproj ./ProjectRoot/Properties/PublishProfiles/FileSystemDebug.pubxml
I'm running the following via MSBuild:
C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ MSBuild.exe ./ProjectRoot/MyProject.csproj / p:DeployOnBuild = true /p:PublishProfile=./ProjectRoot/Properties/PublishProfiles/FileSystemDebug.pubxml
Here's the xml in FileSystemDebug.pubxml
<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> WTF部署任何内容
-
创建的zip文件是猪早餐,其中包含应用程序不需要的文件 .
当我通过visual studio运行此发布配置文件时,会在* C:\ builds \ MyProject *创建一个文件夹,并包含我想要的确切工件 .
如何从msbuild获得这个简单的结果?
5 回答
它看起来像你的发布配置文件没有被使用,并做一些默认包装 . Microsoft Web Publish目标完成上述所有操作,它根据配置选择正确的目标 .
我从TeamCity MSBuild步骤得到了我的工作没有问题,但是我确实指定了一个显式的配置文件路径,你只需要通过名称调用它而没有.pubxml(例如FileSystemDebug) . 只要在您的标准文件夹中就可以找到它 .
例:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe ./ProjectRoot/MyProject.csproj /p:DeployOnBuild=true /p:PublishProfile=FileSystemDebug
请注意,这是使用Microsoft Web Publish目标的Visual Studio 2012版本完成的,通常位于“C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ Web” . 查看部署文件夹,了解所使用的特定部署类型目标
在尝试上述所有答案后仍然遇到麻烦(我使用Visual Studio 2013) . 没有任何内容复制到发布文件夹 .
问题是,如果我使用单个项目而不是解决方案运行MSBuild,我必须添加一个指定Visual Studio版本的附加参数:
12.0
适用于VS2013,替换为您使用的版本 . 一旦我添加了这个参数,它就可以了 .完整的命令行如下所示:
我在这里找到了它:
http://www.asp.net/mvc/overview/deployment/visual-studio-web-deployment/command-line-deployment
他们说:
仅供参考:我在Visual Studio 2015中遇到了同样的问题 . 经过几个小时的尝试,我现在可以做
msbuild myproject.csproj /p:DeployOnBuild=true /p:PublishProfile=myprofile
.我不得不编辑我的.csproj文件以使其正常工作 . 它包含这样一行:
我更改了这一行如下:
(我将10.0更改为14.0,不确定是否有必要 . 但我肯定要删除条件部分 . )
首先检查可以发布解决方案(项目)的开发人员PC的Visual Studio版本 . 如图所示是VS 2013
添加上面的命令行以指定应该构建项目的Visual Studio版本的类型 . 如前所述,当我们尝试仅发布一个项目而不是整个解决方案时,可能会发生这种情况 .
在这里找到答案:http://www.digitallycreated.net/Blog/59/locally-publishing-a-vs2010-asp.net-web-application-using-msbuild