zoukankan      html  css  js  c++  java
  • .net 发布 web应用程序

    第一步:VS2015中发布 

      https://jingyan.baidu.com/article/7f41ecec58f7eb593c095c69.html

    (作用:分离开发代码和测试代码)

    第二步:发布到IIS

    https://jingyan.baidu.com/article/e75aca857c0c79142edac639.html

    (将测试代码发布到IIS)

    一、对于前后端不完全分离的情况,例如 VS2015(MVC模式)

    1如果你是开发人员:那么你可以直接采用第二步,将开发代码直接发布到IIS,

    优点就是方便开发,一生成一刷新就能看到改动内容。

    2但到了真正测试环节还是要分离,必要时数据库也要分离。 

    目的是模拟的跟生产环境一模一样,减少在生产环境部署和运行时出现未知问题。

    3、其实你还必须考虑生产环境计算机的:

    硬件:内存 、CPU、显卡、显示器、IO读写、网络 等。

    软件:操作系统和版本、IIS或apache、 数据库类型和版本、浏览器类型和版本等。

    用户:年龄、知识背景、操作习惯 等。

    最终:用户满意,软件有用、好用、好看。

    这些在开发前就必须考虑好,不然开发好了发现用不了,就完了!

    二、对于前后端完全分离的情况,例如 前端采用VSCode(vue+elementUI)开发,服务器端采用VS2015(webapi模式)开发。

    1前端开发中   运行后就是热加载模式,保存后改动就生效。

    但测试环节,需要执行构建的命令,例如:npm run build  (这一步会压缩代码)

    2服务器端开发中   直接生成。

    但测试环节,最好发布到测试版本(测试版本一般不包含源代码)。

    三、问题

    1 VS中MVC模式点击发布后,生成的文件发布到IIS后,浏览器访问网站出现各种错误,如:样式文件缺失。

    看来VS自带的发布功能也没做么好用。那就必须手动删减源代码后直接发布。

    可以删除代码文件夹如:BLL、DAL、Model、Controller,后来发现一个特别大的文件obj

    百度得: obj是编译文件发布到IIS时可以删。

     相关文章摘要:  https://bbs.csdn.net/topics/340267613

    1.关于bin目录和obj目录
    Bin目录用来保存项目生成后程序集,它有Debug和Release两个版本,分别对应的文件夹为bin/Debug和bin/Release,这个文件夹是默认的输出路径,我们可以通过:项目属性—>配置属性—>输出路径来修改。
    obj目录是用来保存每个模块的编译结果,在.NET中,编译是分模块进行的,编译整个完成后会合并为一个.DLL或.EXE保存到bin目录下。因为每次编译时默认都是采用增量编译,即只重新编译改变了的模块,obj保存每个模块的编译结果,用来加快编译速度。是否采用增量编译,可以通过:项目属性—>配置属性—>高级—>增量编译来设置。
    2.“是否复制到本地”的设置问题
    在添加引用时,.NET会记录添加的引用绝对路径,这些设置保存在“每用户”文件中,(Solution.csproj.user),可以通过记事本打开查看。也可以在:项目属性—>通用属性—>引用路径里面查看。如果设置复制到本地为true,在生成项目时会自动拷贝该DLL到项目生成文件夹中(bin目录),否则不会拷贝。在生成项目时,对所添加的引用的是绝对路径,而在运行时程序集默认只在当前所在的路径下去找。要修改引用的路径,必须通过编程的方法去实现。使用References 对象。
    具体参见:
    http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/vbcon/html/vblrfaddmethodreferences.asp
    说的都很完善了,我来补充一点。obj这个目录,在开发过程中可能会捣乱,比如你的一个引用的dll,更新了,然后你在vs开发环境里面重新删除后,又重新引用,或者直接更新引用了。因为每次编译时默认都是采用增量编译的原因,所以,这个时候,不论你点多少次编译,你会疑惑,明明是更新引用了,为什么新更新的那些函数和接口不存在,这个时候,你可以手工吧obj目录都删除掉一下,然后重新引用下,就可以正确的看到你更新的那些接口和函数了。这个事实说明,obj在开发过程中,也是会被引用到的,并不只是在编译的时候起作用。

    ----------------------------

  • 相关阅读:
    一个ball例程带你进入 Halcon 世界
    新公民读本
    open_window()到底做了什么?
    duilib学习领悟(4)
    duilib学习领悟(3)
    duilib学习领悟(2)
    通过Vue路由传参的两种方式及Vue组件中接收参数的方式
    彻底研透javascript中的对象及面向对象编程
    thinkphp5中使用phpmailer实现发送邮件功能
    小程序和ThinkPHP5结合实现登录状态(含代码)
  • 原文地址:https://www.cnblogs.com/hao-1234-1234/p/10488302.html
Copyright © 2011-2022 走看看