【问题标题】:C# .NET DLL files and using them in a .NET Web ApplicationC# .NET DLL 文件并在 .NET Web 应用程序中使用它们
【发布时间】:2016-05-27 00:29:03
【问题描述】:

我从以前的开发人员那里继承了一个 C# Web 应用程序项目,他们除了代码 cmets 之外没有给我留下任何文档,我花了一些时间弄清楚他们以前做了什么。

所以我在我们的团队服务 (TFS) 源代码控制中找到了他们在项目中使用的类文件 .cs 文件,我必须实施的更改之一是在其中一个类文件中。但是我在生产服务器上找不到任何这些 .cs 文件。

后来我发现他们所做的是创建一个类库 DLL 文件并将其添加到生产中的 Web 应用程序中,这就是为什么我在生产中没有找到类文件,它们在 DLL 文件中。

我看到了创建新类库 DLL 的说明,它很简单。我的问题是,一旦我对类进行了更改,我可以创建一个新的 DLL 文件并将其交换到项目中以替换以前的 DLL 吗?如果有错误将其交换回来?

或者还有比这更多的工作吗?

以前的开发者没有使用开发服务器,而且源代码控制与生产应用程序不匹配,无法链接到生产服务器,制作开发服务器需要我做很多工作,所以现在我必须直接对生产站点进行更改。

【问题讨论】:

  • 老实说,首要任务是设置开发环境。如果政治没有让这种情况发生,那么还有大量的个人 CYA。我不羡慕你
  • 一些开发人员在不需要时会创建 DLL。也许,您可以将源文件添加到项目中。这要简单得多。
  • 我不完全确定你的意思。在某些时候,您听起来好像他们在生产服务器上有源代码;其他时候只是.dll。无论如何,您都希望使用源代码控制来处理您的 DEV 环境。要在生产环境中获取丢失的源代码,请考虑使用 Redgate ReflectorJetBrains dotPeek 对源代码进行逆向工程并将其提交到 TFS quick smart。

标签: c# asp.net visual-studio dll


【解决方案1】:

所以我在我们的团队服务 (TFS) 源代码控制中找到了他们在项目中使用的类文件 .cs 文件,而我必须实施的更改之一是在其中一个类文件中。但是我在生产服务器上找不到任何这些 .cs 文件。

  • 那将是标准/正常
  • 如果应用程序/网站不是 pre-compliled(在 dll 或集合中),您只会在部署/生产中寻找 文件(.cs.vb) dll),否则不会出现源代码。通常,源文件只会在源代码控制 (TFS/Git/etc) 和/或本地开发盒中。

一旦我对类进行了更改,我是否可以只创建一个新的 DLL 文件并将其交换到项目中以替换以前的 DLL?如果出现错误将其交换回来?

  • 为什么不先从 TFS 克隆(又名“获取最新”)并在本地调试?
  • 然后您可以编译应用程序并确定应该更新哪些 dll/s

就此而言,可能只覆盖更新/受影响 dll(通过代码更改)。是的,也可以通过保存(也称为“备份”)您将用新的 dll 替换的“旧”dll 来“回滚 dll”。

不过,我会特别注意其他依赖项——不知道您的应用程序有多大,也不知道它有多少相互关联的依赖项。如果您要更新一些外部库,请务必进行测试 - 有时依赖项是针对 特定 版本

显然,并非所有更改都在已编译的 dll 中(例如前端、脚本、数据等),因此您必须准确找出可能受到影响的内容、测试、调试并制定回滚计划......

以前的开发者没有使用开发服务器,源代码管理不匹配生产应用

  • 他们的本地开发盒可能是完全可行的“开发环境”

  • 到什么程度...此处或那里的图像或文本可能“正常”(您必须知道这些内容是静态的还是动态生成/渲染的)。这可能是您的任务范围 - 重新:从现在开始同步本地、源代码控制和生产...


如果可能的话:

  • 将生产站点下载到本地机器并从本地机器运行。
  • 将更改“推送”到本地副本,看看会发生什么。

虽然这听起来“极端”(如果您有一个大型应用程序),您可能会发现在文件夹之间进行“差异”本地更容易(因此即使图像/等也可以“差异” )。

第...

【讨论】:

  • 感谢您的帮助,只要之前创建了引用,我就能确认 DLL 文件在应用程序中是可交换的,我相信我会尝试使用建议我们的生产网站。
  • 这里的部分问题是我们使用 Microsoft Azure 进行托管,但不幸的是,以前的开发人员并没有利用 Azure 的所有使其易于使用的自动功能,而是使用它就像一个普通的网络主机,而不是一个云提供商。我们的主要 Web 应用程序位于 Azure VM 上,但它只是一个普通的 Web 应用程序,它并没有像应有的那样在 Visual Studio 中创建为 Azure 云服务。
  • @MichaelG.Workman - 明白。 也许的意图是拥有“私有”实例(完全控制)?最好的~
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-02
  • 1970-01-01
  • 2014-12-11
相关资源
最近更新 更多