我有MVC 4.0 WebApi项目,基于此自动生成帮助.
我的模型类在我的解决方案中存储了另一个项目.为每个项目启用xml文件的生成(项目属性 - >构建 - > OutPut - > XML文档文件 - 已启用).
在本地调试中,一切正常 - 将xml文件复制到项目目录,我看到来自其他项目的字段/类的注释.
但是当我使用发布配置文件(到文件夹)时,xml文件不会复制到输出文件夹.仅复制主WebApi项目中的一个xml文件.所以我没有看到其他项目的类的评论.
我们在我们的测试服务器上运行了一个ASP.NET核心站点,我们希望通过XCopy自动部署到我们的IIS Web服务器,就像我们现有的应用程序一样,我已经在运行该站点.我添加了一个发布配置文件,将站点打包到解决方案中的"发布 - 本地"目录.每当我尝试复制现有站点时,所有DLL都被另一个进程使用,可能是Kestrel,因此我被迫部署到兄弟目录并重新映射IIS以查看兄弟.如何在不必手动干预和停止Kestrel或IIS Web服务器的情况下更新正在运行的ASP.NET Core站点?
避免让我们团队中的不同用户对包含对其本地发布配置文件的引用的.csproj文件进行更改的最佳方法是什么?
我们最近迁移到2012,我们的.csproj文件对.csproj XML中的Properties/PublishProfiles中的不同.pubxml文件进行了一些引用.
如果它是相关的,我们svn:忽略任何.user文件和Properties/PublishProfiles文件夹.
以下是我的开发环境的生成发布配置文件:
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is used by the publish/package process of your Web project. You can customize the behavior of this process
by editing this MSBuild file. In order to learn more about this please visit http://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WebPublishMethod>FileSystem</WebPublishMethod>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish />
<LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
<ExcludeApp_Data>False</ExcludeApp_Data>
<publishUrl>\\dev\webroot</publishUrl>
<DeleteExistingFiles>False</DeleteExistingFiles>
</PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
我想要做的是我想象的非常简单,我只想在我想要发布同一个项目的地方添加一个额外的发布网址.不幸的是,我还没能找到任何关于如何以直截了当的方式做到这一点.所有这些都表明我需要实现一些复杂的msdeploy解决方案,或者简单地回退到脚本(即ps/batch + robocopy/xcopy),这是不可取的.
我想象一个人可以简单地做一些事情:
<publishUrl>\\dev\webroot;\\dev2\webroot2</publishUrl>
Run Code Online (Sandbox Code Playgroud)
要么
<itemGroup>
<publishUrl>\\dev\webroot;</publishUrl>
<publishUrl>\\dev2\webroot;</publishUrl>
</itemGroup>
Run Code Online (Sandbox Code Playgroud)
主要问题是: 如何通过FTP或文件系统扩展我的发布配置文件以部署到多个位置?
如果是RTFM响应 - 请参考我可以阅读的内容.
更新 如果可以使用FTP进行多次部署,我也会对这样的解决方案感兴趣.
我认识到Web Deployment Projects不支持Visual Studio 2012.看完这篇文章后,我试着开始Publish Profiles工作.
安装Visual Studio Web发布更新后,我能够使用新的发布对话框发布网站项目和Web应用程序项目Visual Studio 2012.
因为我们正在使用TFS 2010 Team Build我试图通过MSBuild参数使用发布配置文件.但以下语句仅适用于发布Web应用程序项目.
MSBuild.exe MyWebs.sln /p:Configuration=Release /p:DeployOnBuild=true;PublishProfile=DeployToDirectory.pubxml
Run Code Online (Sandbox Code Playgroud)
如果我尝试发布网站项目没有任何反应.我的网站项目的发布配置文件仅适用于新的发布对话框,Visual Studio 2012但不适用于调用时MSBuild.
任何的想法?
在Visual Studio中创建新的.pubxml时,它具有在顶级PropertyGroup元素下定义的一组基本属性(例如,属性WebPublishMethod,DeployIisAppPath等).但是我发现很难找到这些属性的确切含义的文档,更不用说可以在配置文件中使用的完整可选标记/属性集的引用.这些文件是否存在?到目前为止,唯一可用于了解大量标签/属性的方法是查看其他人的示例.pubxml文件.
希望有人可以证明我是错的,但似乎很难通过Google搜索来表达这样的文档.
我喜欢使用新的VS 2012 Publishing Profiles,但在构建服务器上使用它时,我不确定如何存储密码.
当我勾选"保存密码"框时,它会创建一个.pubxml.user文件并在XML节点中加密密码.
当我在构建服务器上运行部署时,密码文件似乎总是被忽略.
我可以将密码存储在一个
<PropertyGroup>
<Password>NotMyRealPassword>
</PropertyGroup
Run Code Online (Sandbox Code Playgroud)
但鉴于他们已经在加密它,我很乐意尽可能使用VS加密.
如何在<Password>不构建自定义任务的情况下解密和填充属性?
此外 - 如果我必须构建自定义MSBUILD任务,此SUO文件中使用了哪种类型的加密?
好的,这是一个奇妙的错误.我有一个2012解决方案,在2012 TFS服务器上执行MSBuild.传递给构建过程模板中"MSBuild Arguments"字段的参数如下:
/ p:DeployOnBuild = true/p:PublishProfile = ProfileForProjectA/p:PublishProfile = ProfileForProjectB /p:VisualStudioVersion=11.0
我从TFS回来的错误是....
C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.targets(4435):PublishProfile的值设置为'ProfileForProjectA',期望在''找到文件' C:\ Builds\1\Solution\Solution\Sources\Solution\ProjectB\Properties\PublishProfiles\ProfileForProjectA.pubxml'但找不到它.
换句话说,构建服务器似乎希望每个发布配置文件(*.pubxml)都在每个PublishProfiles文件夹中.这两个项目的发布方法是"文件系统".
唯一解决它的是将ProfileForProjectA添加到ProjectB的PublishProfiles文件夹,反之亦然,但这似乎不是一个非常优雅的解决方案.任何人都可以重现这种行为吗?有没有人有更优雅的解决方案?我错过了什么吗?
提前致谢.
我在Visual Studio 2013 ASP.NET Web API 2项目中进行了以下设置.
每个细节见下文.
<!-- Web.Develop.config (Web Config Transform) -->
<appSettings>
<add key="ReportInputPath"
value="DevelopPath"
xdt:Transform="SetAttributes"
xdt:Locator="Match(key)" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)
<!-- Web.Release.config (Web Config Transform) -->
<appSettings xdt:Transform="Remove" />
Run Code Online (Sandbox Code Playgroud)
<!-- **Develop.pubxml (Publish Profile) -->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WebPublishMethod>FileSystem</WebPublishMethod>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>x64</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish />
<LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
<ExcludeApp_Data>True</ExcludeApp_Data>
<publishUrl>Path</publishUrl>
<DeleteExistingFiles>True</DeleteExistingFiles
<ExcludeFilesFromDeployment>packages.config</ExcludeFilesFromDeployment>
</PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
<!-- Release.pubxml (Publish Profile) -->
<!-- Contents are identical to Develop.pubxml.
This is used to target the Web.Release.Config transform. -->
Run Code Online (Sandbox Code Playgroud)
每当我通过发布发布配置文件发布应用程序时,我的 …
publish-profiles ×10
msbuild ×4
msdeploy ×2
asp.net ×1
asp.net-core ×1
deployment ×1
iis ×1
svn ×1
tfs ×1
tfs2012 ×1