为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
手掌心 2023-07-09 16:39:20
更新继承的 VS2017 C# MVC 项目中的网页。无法复制整个重建结果,因为我没有与生产中的代码库(尚)相匹配的最新代码库,并且需要向现有网站添加新页面。只想将这个单页/.dll 提升到现有产品中。背景:我从网站供应商那里继承了巨大的预编译 C# 网站代码(我们构建了它,我们得到了报酬,现在它是你的了),其中包括解决方案中的 6 个项目,我不熟悉 MVC 思维。我第一次向项目添加新网页,进行构建,进入提示符并排序我的本地(我发布到本地驱动器,然后手动将文件自动复制到服务器)TFS 按日期时间发布 /bin 目录并发现已更改的单个 .dll 文件。将其加上源页面(存根)复制到生产网站上。它实际上“有效”......但给了我一个服务器错误 500 (没有帮助),但所有其他页面加载并工作正常,所以这意味着我认为我走在正确的轨道上......所以我回去了,补充道一些调试代码到页面,做了另一个构建,但现在有大约 10 个 .dll 文件发生了变化?!我听说 REbuild 会导致所有文件更新,无论发生什么变化,所以我一直只使用 Build。如何可靠地判断构建后需要复制哪些文件?我可以以某种方式告诉 VS 只重建项目中的单个网页吗?
查看完整描述

1 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

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

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

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

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


查看完整回答
反对 回复 2023-07-09
  • 1 回答
  • 0 关注
  • 73 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信