在我们的ASP.Net Web项目中,我们似乎有一些.refresh文件与我们正在使用的一些第三方Dll相关联.知道它们是什么以及它们是如何/何时创建的?
Hul*_*eve 63
这些文件提供了有问题的DLL的路径,告诉Visual Studio在哪里找到它(如果在文本编辑器中打开它们,可以检查它).每次向项目添加新引用时都会创建它们.
它们通常在您使用不创建标准Visual Studio项目文件的项目类型时出现,因为通常引用DLL的路径会在那里.
小智 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目录中。
归档时间: |
|
查看次数: |
41250 次 |
最近记录: |