ASP.Net - 从 Visual Studio 2003 过渡到 Visual Studio 2010
Posted
技术标签:
【中文标题】ASP.Net - 从 Visual Studio 2003 过渡到 Visual Studio 2010【英文标题】:ASP.Net - Transition from Visual Studio 2003 to Visual Studio 2010 【发布时间】:2011-09-09 20:36:15 【问题描述】:我们正在将我们的 ASP.Net 开发从 Visual Studio 2003 和 .Net 1.1 切换到 Visual Studio 2010 和 .Net 3.5。到目前为止,我们成功地迁移了我们的后端代码,并在与 ASP.Net 前端代码进行了一些斗争之后。虽然后端代码的工作恢复了正常的生产力,但由于以下问题,ASP.Net 前端代码的工作受到了极大的阻碍:
Visual Studio 2010 Web Designer 经常崩溃(例如在使用“撤消”功能后) - 我们已经习惯了 Visual Studio 2003 Web Designer 在处理大型 Web 表单时的稳定性问题,但新的 Web Designer即使使用微不足道的 Web 表单也经常崩溃。有什么东西可以让事情稳定吗? ServicePack 1 没有带来任何帮助。
在 Web 设计器中向 Web 表单添加新控件时,新控件的声明将永远自动传播到迁移的 Web 表单中的代码隐藏页面。从头开始创建的新 Web 表单似乎可以正常工作。迁移的 Web 表单保持旧的文件结构(aspx、aspx.cs 和 aspx.resx),而新的 Web 表单获得新的文件结构(aspx、aspx.cs 和 aspx.designer.cs。重新创建所有现有的 Web 表单手动获取新的文件结构将是一个非常痛苦的操作。有没有办法让旧的体面的控件声明传播到代码隐藏文件的代码也可以在 Visual Studio 2010 中工作?
(目前我们最大的问题):在设计网页表单时,我们基本上是把文本框、标签、按钮等放在一个带有ms_positioning="GridLayout"的div中。我们为 div 中的每个控件定义绝对坐标。这在 Visual Studio 2010 中似乎无法正常工作。经过大量努力,我们可以以某种方式继续使用这种方法,但是现在向 Web 表单添加新按钮或文本框意味着需要付出巨大的努力。如果不加注意,它甚至会导致 css-classes-file 被覆盖(Web Designer 有时决定不在 aspx 文件中而是在 css 文件中写入坐标)。我最近读到,使用绝对坐标在网页上定位内容是一种非常糟糕且已弃用的方法。我倾向于相信它看到在新的 Visual Studio 中完成它是多么可怕。但是快速创建类似winforms的Web表单的正确方法是什么? (快速我的意思是设计东西的简单拖放点击方式)。
提前感谢您的帮助。
最好的问候 埃里希霍拉克
【问题讨论】:
我们在后端使用 xml web services,4.0 似乎不再支持它们。我们目前没有时间正确检查新的 WCF 服务(迁移是一个完全不同的项目的必要部分,不应该占用太多时间)。 【参考方案1】:我会尝试逐个解决这个问题:
设计师
不幸的是,Visual Studio 2010 中的新设计器一直受到问题的困扰。在 2010 年,该编辑器完全使用 WPF 进行了改进,本应使其更快,但到目前为止似乎不如以前的编辑器。有一些改进,但如果我可以选择,我会坚持使用旧编辑器,至少在新编辑器解决问题之前。这可能不是任何安慰,但你并不是唯一一个感到痛苦的人。
添加控件/新页面文件结构
再一次,这是另一种迁移将被证明是痛苦的情况。如果我要建议一种方法,我会将标记复制粘贴到新创建的表单中(使用 VS 2010 创建)。 Designer.cs 文件应注册控件。您可能会遇到事件处理程序映射的问题,但希望它不会妨碍注册控件的 Designer.cs 文件。我知道这是一个痛苦的前景,但您必须记住,您正在升级多个版本。
设计器视图和绝对定位
在迁移系统时,您可能希望将默认视图设置为源视图,以便将 html 粘贴到页面上。您可以通过转到Tools > Options > HTML Designer > General
来完成此操作。老实说,在我看来,设计师真的很脆弱,应该避免。它生成的 HTML 真的很糟糕。
使用绝对坐标在页面上定位元素肯定是一种已弃用的方法,但如果您此时的目标是让您的迁移工作,那么现在不要担心。最终,重构 HTML 和 CSS 以使用更现代的技术将是一个好主意,但如果当前的代码库与浏览器兼容,则暂时不要使用它。
一开始可能看起来不像,但如果你能离开设计器并使用源视图,你不会后悔的。一开始确实需要更多时间,但从长远来看,控制标记最终将为您节省大量时间。如果允许设计师在整个系统中肆意妄为,它会搞砸。通过使用源视图,您可以完全控制正在发生的一切,这将成为一个巨大的优势。通过利用母版页等新功能,您可以在源代码视图中像在 1.1 的设计器视图中一样快速移动。我自己在 1.1 中开始使用设计器视图,但在切换到源视图后,我再也没有回头。你确实以其他方式弥补了生产力。
我希望我能给你一个“这样做,一切都会马上到位”的答案,但我认为你正处于一个痛苦的转换过程中。好消息是,一旦完成,您就可以开始使用过去 8 年来出现的所有新功能。 ;)
【讨论】:
如果我理解正确的话,所有真正糟糕的事情都来自网页设计师的 WPF 转换。 VS 2008会更好吗?我的问题是,迁移的目标不仅仅是使用更新的 .Net 框架构建现有项目,而是为持续开发获得稳定的基础。所以会有很多时候我们必须为某个表单添加一些控件。 其他人可能不同意我的观点,但如果您正在寻找稳定性,我会使用 2008 3.5。您会错过一些很酷的功能,但您仍然会很流行。我相信他们最终会从新编辑器中解决所有问题,但目前我认为 2008 年在稳定性方面具有优势。不过请务必下载服务包 - 它们会产生很大的不同。【参考方案2】:我看不到快速的拖放方式。 GridLayout 之类的东西已被弃用;从长远来看,手动移植表单、清理标记以及使用表单的代码视图而不是设计视图更容易。也是编写干净、独立的 CSS 而不是内联样式的机会。
在 1.1 之后,您不需要在代码隐藏中声明表单元素 - 新的部分类不需要这样做。所以这只是另一件不同的事情。我现在实际上正在做一个类似的项目;我利用了新的大师班,这意味着无论如何都要改变很多。
我诚实的建议是接受它并继续前进:)
我在这里问了一个类似的问题:
Visual Studio Multi-Project Solution Options
【讨论】:
部分类 (.designer.cs) 的问题是 VS 2010 在将旧的 VS 2003 解决方案转换为 2010 时似乎忘记创建它们。关于“干净、独立的 CSS 而不是内联样式” ":这是否意味着我需要一个单独的 CSS 类来为我想要绝对定位的每个控件提供一个单独的 CSS 类? 您无法从 VS2003/ASPNET1.1 直接转换为 VS2010/ASPNET4.0。从 2.0 版本开始,您可以在 VS 中自动迁移。您需要在您的情况下手动执行此操作... 忘掉绝对定位 - 没必要挂断电话。如果您愿意,可以为整个项目使用单个样式表 - 或者根据项目的结构将其分解。 通常在一个带有GridLayout的div中有多个Label、Textboxes、DropDownLists、Buttons等。那么如何替换以上是关于ASP.Net - 从 Visual Studio 2003 过渡到 Visual Studio 2010的主要内容,如果未能解决你的问题,请参考以下文章
从模板 Visual Studio 创建 Blazor(ASP.NET Core 托管)项目
我可以通过 Visual Studio 从 ASP.NET 网站导出生成的 html 页面吗?
如何使用 Visual Studio 19 从网站步入 WCF asp.net 服务应用程序
无法在 Visual Studio 中发布 ASP.Net 应用程序
如何从 Visual Studio 2015 (+U1) ASP.NET Core 发布到 Windows Server 2012R2 上的 IIS?