2010-11-03 170 views

回答

60

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

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

32

here

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

+5

部分从http://monsur.xanga.com/437206798/dllrefresh-and-aspnet/复制 – 2012-11-07 23:40:46

+16

嗨SharpUrBrain,它看起来像你刚从上面的链接复制大部分内容。你可以编辑你的文章并给予作者归属吗?Stack Overflow并不欢迎抄袭,并且在信用到期时给予信用总是不错的。谢谢! – 2012-11-18 20:45:55

+0

新文件引用的dll是否必须是.net格式?新鲜的文件在C++ DLL中新鲜吗? – Gqqnbig 2016-05-20 21:56:15

4

一些关于尝试和错误后刷新文件的信息。这些实验是用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 Options项目页面中为我解决了这个问题。

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

+0

我认为当你说'网站项目'时,你的意思是'网站'。 – 2017-08-17 17:27:38

相关问题