ASP.NET MVC 使用MSBuild生成的几个注意事项
做新项目,当时参考NopCommerce的结构,后台Nop.Admin是一个独立的Area Web Site,但部署的时候发现,使用一键发布,Admin Area会丢失。
研究了下NopCommerce的做法,使用MSBuild组织文件结构,关键的地方在下面:
<!--Now lets publish Nop.Admin-->
<MSBuild Projects="$(RootFolder)\Presentation\Nop.Web\Administration\Nop.Admin.csproj"
Targets="ResolveReferences;_CopyWebApplication"
Properties="WebProjectOutputDir=$(DeployFolder)\$(DeployPrefix)\Administration\;
OutDir=$(DeployFolder)\$(DeployPrefix)\Administration\bin\;Configuration=$(Configuration)" /> <!--Now lets move the Nop.Admin/bin/ to the root bin/-->
<CreateItem Include="$(DeployFolder)\$(DeployPrefix)\Administration\bin\*.dll">
<Output TaskParameter="Include" ItemName="CompileOutput" />
</CreateItem>
<Copy SourceFiles="@(CompileOutput)"
DestinationFolder="$(DeployFolder)\$(DeployPrefix)\bin\" /> <!--Lets delete the bin in Nop.Admin-->
<RemoveDir Directories="$(DeployFolder)\$(DeployPrefix)\Administration\bin\" /> <!--Lets delete the packages.config files-->
<Delete Files="$(DeployFolder)\$(DeployPrefix)\Administration\packages.config;
$(DeployFolder)\$(DeployPrefix)\packages.config"/>
然后发布的时候可以使用Web.Release.config替换Web.config
<!--Transform support-->
<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Web\Microsoft.Web.Publishing.Tasks.dll"/> <!--Transform root web.config file-->
<TransformXml Condition="Exists('$(WebFolder)\Web.$(Configuration).config')" Source="$(WebFolder)\Web.config" Transform="$(WebFolder)\Web.$(Configuration).config" Destination="$(DeployFolder)\$(DeployPrefix)\Web.config" />
使用Settings.Release.txt替换Settings.txt
<!--Lets Copy \App_Data\Settings.Release.txt To \App_Data\Settings.txt -->
<Copy Condition="Exists('$(WebFolder)\App_Data\Settings.$(Configuration).txt')"
SourceFiles="$(WebFolder)\App_Data\Settings.$(Configuration).txt"
DestinationFiles="$(DeployFolder)\$(DeployPrefix)\App_Data\Settings.txt"
SkipUnchangedFiles="true" OverwriteReadOnlyFiles="true" />
<!--Lets delete the Settings.Release.txt file-->
<Delete Condition="Exists('$(DeployFolder)\$(DeployPrefix)\App_Data\Settings.$(Configuration).txt')"
Files="$(DeployFolder)\$(DeployPrefix)\App_Data\Settings.$(Configuration).txt"/>
MSBuild配置文件,可下载参考。
装了Win8+VS2013后,生成时会提示:
error MSB4019: 未找到导入的项目“C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets”。请确认 <Import> 声明中的路径正确,且磁盘上存在该文件。
解决方法:
在命令行使用"C:\Program Files (x86)\MSBuild\12.0\Bin\MSBuild.exe"替换”%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe“
或者从别的开发机上复制一份WebApplications
参考文章:
http://blogs.msdn.com/b/visualstudio/archive/2013/07/24/msbuild-is-now-part-of-visual-studio.aspx
MSBuild学习资料:
http://technet.microsoft.com/zh-cn/library/0k6kkbsd
ASP.NET MVC 使用MSBuild生成的几个注意事项的更多相关文章
- ASP.NET MVC 使用MSBuild部署的几个注意事项
ASP.NET MVC 使用MSBuild部署的几个注意事项 做新项目,当时参考NopCommerce的结构,后台Nop.Admin是一个独立的Area Web Site,但部署的时候发现,使用一键发 ...
- ASP.NET MVC 解析模板生成静态页一(RazorEngine)
简述 Razor是ASP.NET MVC 3中新加入的技术,以作为ASPX引擎的一个新的替代项.在早期的MVC版本中默认使用的是ASPX模板引擎,Razor在语法上的确不错,用起来非常方便,简洁的语法 ...
- ASP.NET MVC API 路由生成规则
我们都知道调用ASP.NET MVC的某些API函数(诸如:Url.Action.RedirectToAction等)可以生成URL,ASP.NET MVC会根据调用API函数时传入的参数去匹配系统定 ...
- ASP.NET MVC之视图生成URL(二)
前言 上一节我们讲述了MVC中从控制器到视图传递数据的四种方式,想必大家早已掌握了,那我们继续往下走. 话题 在MVC的Web应用程序中,我们经常会出现这样的操作,从一个视图跳转到另外一个视图,大部分 ...
- ASP.NET MVC之视图生成URL
在MVC的Web应用程序中,我们经常会出现这样的操作,从一个视图跳转到另外一个视图,大部分情况下都是通过链接来实现,当然这是一种非常不错的选择,为什么不说这是最好的选择呢?因为它也有其弊端,我们看看如 ...
- Asp.net MVC 简单实现生成Excel并下载
由于项目上的需求,需要导出指定条件的Excel文件.经过一翻折腾终于实现了. 现在把代码贴出来分享 (直接把我们项目里面的一部份辅助类的代码分享一下) 我们项目使用的是Asp.Net MVC4.0模式 ...
- Asp.Net MVC 从数据库生成代码(包括页面)
项目需要,数据库已经设计完成,需要生成相关的数据访问代码和页面. 参考:http://www.tracefact.net/asp-net/aspnetmvc-model-part1.aspx http ...
- asp.net mvc+EF 递归生成树结构返回json
0.数据表结构,主要属性有:Id.parentId(父节Id).Text.Url……等等. 1.新建一个树结构MenuModels public class MenuModels { private ...
- asp.net mvc 根据路由生成正确的url
假设存在这样一段路由配置: routes.MapRoute( name: "ProductList1_01", url: "pl/{bigSortId}_{smallSo ...
随机推荐
- 第5章 原型模式(Protype Pattern)
原文 第5章 原型模式(Protype Pattern) 定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象. 原型图: 原型模式主要用于对象的复制,它的核心是就是类图中的原型类Pro ...
- 删除句子UITableView额外的底线和切割线
于viewDidLoad添加代码功能句子: self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero]; 它可 ...
- jQuery - 基于serializeArray的serializeObject
将表单序列化成JSON对象,注意不管是自实现的serializeObject()还是原生的serializeArray(),所要序列化的控件都必须要有name,而不是id jQuery.prototy ...
- Matlab图像处理系列4———傅立叶变换和反变换的图像
注意:这一系列实验的图像处理程序,使用Matlab实现最重要的图像处理算法 1.Fourier兑换 (1)频域增强 除了在空间域内能够加工处理图像以外,我们还能够将图像变换到其它空间后进行处理.这些方 ...
- Android "QR二维码扫描"
支持灯 扫描结果 支持 抄.分享.浏览打开(超链接) 自己主动保存扫描记录 划删除 和源代码 git: http://git.oschina.net/892642257/QRCode csdn(0分) ...
- Codeforces 328B-Sheldon and Ice Pieces(馋)
B. Sheldon and Ice Pieces time limit per test 1 second memory limit per test 256 megabytes input sta ...
- 队列--Redis+Log4Net
队列--Redis+Log4Net Redis简介 Redis是一个开源的,使用C语言编写,面向“键/值”对类型数据的分布式NoSQL数据库系统,特点是高性能,持久存储,适应高并发的应用场景.Redi ...
- CSS3+HTML5特效3 - 纵向无缝滚动
老惯例,先看例子. This is a test 1. This is a test 2. This is a test 3. This is a test 4. This is a test 5. ...
- iOS MapKit导航及地理转码辅助类
头文件: #import <Foundation/Foundation.h> #import <MapKit/MapKit.h> @interface DirectionRou ...
- js+css3动态时钟-------Day66
昨天,有一天招,宽带到底没装上.相当恼火,不过包了一天租新房,有很多想法下来,其中,率先实现了--动态时钟(它已上载的资源,一些粗略的全貌.汗...) 这里记录.这个看似简单的功能,以达到良好的,我在 ...