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