首页 > 解决方案 > 在 Visual Studio 项目中构建单个网页时如何确定受影响的文件以便仅使用该页面更新网站?

问题描述

在继承的 VS2017 C# MVC 项目中更新网页。不能只复制整个重建结果,因为我没有与生产中的内容相匹配的最新代码库(还),并且需要向现有网站添加新页面。只想将此单页/.dll 推广到现有生产中。

背景:我从网站供应商那里继承了巨大的预编译 C# 网站代码(我们构建了它,我们得到了报酬,现在它是你的了),其中包括解决方案中的 6 个项目,我不熟悉 MVC-think。我第一次在项目中添加了一个新网页,做了一个构建,放到一个提示符下并对我的本地进行排序(我发布到我的本地驱动器,然后手动将文件 robocopy 到服务器) TFS 按日期时间发布 /bin 目录并找到已更改的单个 .dll 文件。将其加上源页面(存根)复制到生产网站上。

它实际上“有效”......但给了我一个服务器错误500(没有帮助)但所有其他页面都加载并正常工作,所以这意味着我认为我走在正确的轨道上......所以我回去了,补充道页面的一些调试代码,做了另一个构建,但现在有 10 个 .dll 文件发生了变化?!我听说 REbuild 会导致所有文件都得到更新,而不管更改如何,所以我一直只使用 Build。

如何可靠地判断构建后我需要复制哪些文件?我可以以某种方式告诉 VS 只重建项目中的那个网页吗?

标签: c#htmlmodel-view-controllercompilation

解决方案


所以经过大量的试验和错误后,我发现只有某些文件可以这样完成。有问题的代码页不需要对项目中的任何其他页面或其他依赖项产生任何影响,除了非常特定的程序集,这些程序集非常简单且仅在该特定页面中使用。

在我的具体示例中,我将 ASP.Net 代码页面添加到现有 C# 项目中。我的页面需要一个外部 .dll 程序集才能工作,但任何其他项目中的其他代码都不受此影响。我还遇到了 32 位与 64 位的问题,其中程序集必须是 Visual Studio 中的 32 位程序集,否则项目不会编译,但运行时程序集必须是 64 位程序集才能在网站上运行,所以我必须手动复制它。啊。

所以我发现我可以对项目进行完整的构建,然后进行发布以预编译整个解决方案。然后,我查看本地机器上生成的 /bin 目录,并找到以我的代码页文件名开头的相关*.compiled文件。在该文本文件中有一行内容为assembly="App_Web_4wfba3zi"或类似内容。这会告诉您项目需要哪个.dll来运行该预编译网页。

我将.compiled.dll文件都复制到生产网站/bin目录中(记住将存根文件留在网站中),我很高兴!这当然是一次学习经历……


推荐阅读