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

Jac*_*ope 80 asp.net

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

Hul*_*eve 63

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

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


Sha*_*ain 31

这里:

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


小智 5

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

如前所述,通过浏览添加对程序集的引用会添加一个.refresh文件。但是,如果在添加目录中显式添加的DLL上还有其他从属DLL,则也将隐式添加从属,但没有.refresh文件!因此,例如,我添加了对“ MyAssembly.dll”的引用,我还将获得“ MyAssembly.dll.refresh”。但是,如果有一个程序集“ MyAssembly.dll”所依赖的“ MyDependentAssembly.dll”,我将不会得到“ MyDependentAssembly.dll.refresh”。因此,发生的是刷新了一个程序集,但没有刷新它的依赖项!您必须一次以相反的依赖关系顺序添加DLL,这样才能更好地工作。

其他一些注意事项。如果存在,添加“ MyAssembly.dll”也将添加“ MyAssembly.pdb”。如果存在,还将“ MyAssembly.xml”添加到引用中。当存在“ MyAssembly.dll.refresh”时,这两个文件也将刷新。

但是,Visual Studio何时决定寻找刷新文件?现在请记住,在Web项目中,项目文件不会特别跟踪引用的DLL。您不会在项目文件中找到仅项目依赖项中列出的DLL。那么刷新何时发生?

刷新发生的答案是在构建期间必须加载引用的程序集。这意味着,尽管构建一个预建的可更新网站可能不会捕获所有DLL。我一直拥有一个不会刷新的DLL,然后我意识到它仅在.ascx文件内部使用。取消选中“ MSBuild选项”项目页面中的“允许预编译站点可更新”复选框,为我解决了该问题。

即使您在代码中添加通过反射加载的引用DLL,也不会通过引用对其进行更新。您将必须使用构建事件将其复制到bin目录中。