什么是ASP.Net中的dll.refresh文件?

时间:2010-11-03 16:19:23

标签: asp.net

在我们的ASP.Net网站项目中,我们似乎有一些.refresh文件与我们正在使用的一些第三方Dll相关联。知道它们是什么以及它们是如何/何时创建的那样?

3 个答案:

答案 0 :(得分:64)

这些文件提供了相关DLL的路径,告诉Visual Studio在哪里找到它(如果在文本编辑器中打开它们,可以检查它)。每次向项目添加新引用时都会创建它们。

当您使用不创建标准Visual Studio项目文件的项目类型时,它们通常会出现,因为通常会引用引用的DLL的路径。

答案 1 :(得分:31)

来自here

  

在ASP.NET项目中,添加基于文件的引用将在Bin文件夹中添加.refresh文件。当项目受源代码管理时,此文件将添加到源代码管理中。丢弃bin目录的*.dll.refresh个文件。每次添加外部引用时,您都会在其旁边找到一个dll.refresh文件。这些dll.refresh文件是规则的一个例外,它们应该进入源代码管理。它是您的Web项目知道其引用位置的唯一方式。

答案 2 :(得分:5)

有关试用和错误后刷新文件的一些信息。这些实验是使用Visual Studio 2012完成的。这些引用被添加到C#asp.net Web项目中。

如前所述,通过浏览添加对程序集的引用会添加.refresh文件。但是,如果在您添加的目录中显式添加的DLL上有其他依赖DLL,则也会隐式添加依赖项,但不包含.refresh文件!例如,我添加对" MyAssembly.dll"的引用。我也会得到" MyAssembly.dll.refresh"。但是如果有一个程序集" MyDependentAssembly.dll"那个" MyAssembly.dll"取决于我不会得到一个" MyDependentAssembly.dll.refresh"。那么所发生的是一个组件被刷新但不是它的家属!您必须以相反的依赖顺序一次添加一个DLL,然后事情会更好。

其他一些要小心的事情。 添加" MyAssembly.dll"还将添加" MyAssembly.pdb"如果它存在。另外" MyAssembly.xml"如果它存在,将被添加到引用。 " MyAssembly.dll.refresh"这两个文件也会刷新。在场。

但是,Visual Studio什么时候决定寻找刷新文件?现在请记住,在Web项目中,项目文件没有具体跟踪引用的DLL。您不会在项目文件中找到仅列出项目依赖项的DLL。那么什么时候刷新?

刷新时的答案是在构建期间必须加载引用的程序集时。这意味着,虽然构建预构建的可更新网站可能无法获取所有DLL。我一直有一个不会刷新的DLL然后我意识到它只在.ascx文件中使用。取消选中"允许预编译的网站可更新" MSBuild Options项目页面中的复选框为我解决了这个问题。

如果您添加通过代码中的反射加载的引用DLL,它们仍然不会通过引用进行更新。您必须使用构建事件将它们复制到bin目录中。