c# wpf项目中引用的dll怎么让它能自动更新?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# wpf项目中引用的dll怎么让它能自动更新?相关的知识,希望对你有一定的参考价值。

我的一个wpf解决方案中有两个项目,一个是exe应用程序,一个是dll,我想让exe工程引用dll工程生成的dll,我的做法是在exe工程中的引用程序集中嵌入那个dll(复制到本地选的是true,选false也不行),可是那个dll就不更新了,每次dll发生变化都不会更新exe工程中的dll。
请问有没有类似VC中那种应用文件位置的办法?或是其他什么办法让dll能随原始文件更新?

引用方式的问题。

在你的exe工程“资源解决方案”的bin目录(或引用)上 右键 “添加引用”,然后会出现一个对话框,选择“工程”(Projects)选项卡,里边会出现你的那个类库(dll),然后添加就成了。
每次build或debug都会更新。
参考技术A 有两种,依照不同来处理。
如果A项目还没有生成.dll文件的情况下,首先打开A,B项目,然后在解决方案资源管理器中右击B项目选择添加引用,然后选择项目,里面会有A项目的。如果没有打开同时打开AB项目,那就没法引用。 注意,同时打开的意思是,两个项目打开在一个环境中。

还有就是A项目已经生成了DLL文件,那么一样,选择添加引用的时候选择浏览选项卡,然后可以选择自己的.dll文件,或者刚刚不久用过的,那么直接在“最近”选项卡里面会显示。

最后就是要在程序上面引用:using +库名

无法更新自动刷新引用

在调试程序时,出现:警告 无法更新自动刷新引用“web2aspnet2.operatesqlserver.dll”。 找不到程序集“D:\Downloads\OperateSqlServer\bin\Debug\Web2ASPNET2.OperateSqlServer.dll”。请问是什么原因?谢谢!

什么原因造成的呢?这是因为项目引用的dll源无效了。项目的dll源记录在于dll同名的.refresh文件中。例如:
log4net.dll
log4net.dll.refresh
其中的内容只有一个路径:
..\packages\log4net.2.0.0\lib\net40-full\log4net.dll
也就是该项目的同一层目录中,有一个叫packages的文件夹,包含了log4net.dll的原版文件。这是我通过nuget附加dll的情形。此时如果你把这个packages包删除掉,再更新引用就会报这个错误了。
另一个场合是你手工添加引用。引用源文件被你移动或删除了,道理一样。
解决的办法救很明显了:要么按照refresh文件中所指示的路径,恢复dll原文件;要么删掉这个refresh文件,通常dll已经复制到项目的bin目录了。或者为了保持dll文件同步更新,删除掉旧的引用,重新添加一次就行了。
参考技术A “D:\Downloads\OperateSqlServer\bin\Debug\Web2ASPNET2.OperateSqlServer.dll”这地址指定到你D盘下载夹里少了一个名为:“web2aspnet2.operatesqlserver.dll”的文件,请问你这是不是在运行某个下载程序时出现的这种情况?如果是的话,建议你从新安装这个软件,可以修复这个问题! 参考技术B 在你的网站上右键--添加引用--项目,选择那个DLL文件,如果没有显示,就用旁边标签页的浏览,到你的程序包里找到那个DLL选中添加即可。
“在选定的数据源上未找到名为“是否签收”的字段或属性。” 检查你的GridView属性中,选择BoundField有一个HeaderText属性,看下有没有这个表头。
参考技术C 右键打开引用的文件将后缀为“dll.refresh”的文件删除后刷新下项目即可 参考技术D 重装该程序再试试。

以上是关于c# wpf项目中引用的dll怎么让它能自动更新?的主要内容,如果未能解决你的问题,请参考以下文章

如何在C#做的网页里添加bin文件和DLL?

wpf 不能引用system.window.Forms

wpf怎么使用WindowsFormsHost

C# WPF 的多国语言处理

c# 只安装WPF环境 导出excel表格 问题

请问如何在c#中用WPF调用Winform变写的用户控件,知道的请给予解说,谢谢!