本文基于前一篇文章已经建好的项目继续: 用 WiX 制作安装包:创建一个简单的 msi 安装包 添加 WixNetFxExtension 引用 在 msi 安装包项目的“Reference”上右键,“添加引用...虽然我们前面选择的 C:\Program Files (x86)\WiX Toolset v3.11\bin 看起来是个绝对路径,但实际上在 wixproj 项目里记录的是一个属性引用,因此可以很容易在团队成员之间共享和跨版本迁移...[CDATA[ 和 ]]> 包裹起来了,避免判断条件中出现了一些会破坏 XML 语法的字符(如 等)出现导致意外的问题(但实际上在本例中,我们只用了字母和下划线,所以你也可以直接写 WIX_IS_NETFRAMEWORK...我整理成下表,方便大家根据自己的需要查阅: .NET Framework 版本 对应判断属性 4.8 WIX_IS_NETFRAMEWORK_48_OR_LATER_INSTALLED 4.7.2 WIX_IS_NETFRAMEWORK...下图是我魔改了 DEMO 后在 Windows 11 上的截图(放上来就是为了平衡美感的): 不过为了真实性,我还是找了台 Windows 7 纯净系统来测试: 如果点击“OK”,安装程序将直接退出
---- 源代码包 源代码包不是 NuGet 官方的概念,而是林德熙和我在 GitHub 上做的一个项目,目的是将你的项目以源代码的形式发布成 NuGet 包。...在安装此 NuGet 包后,目标项目将获得这些源代码。 你可以通过以下博客了解如何制作一个源代码包。...我写了一篇讲解 WPF 编译过程的博客,在解决这个问题之前,建议阅读这篇博客了解 WPF 是如何进行编译的: WPF 程序的编译过程 在了解了 WPF 程序的编译过程之后,我们知道了前面一些疑问的答案:...在使用 ReferencePath 的情况下,无论是项目引用还是 NuGet 包引用,都会被换成普通的 dll 引用,因为这个时候目标项目都已经编译完成,包含可以被引用的程序集。...Import 我们 NuGet 包中的编译文件,但这些不如以上方案来得靠谱,因为上面的代码可以使得项目文件的修改完全确定,不用随着开发计算机的不同或者 NuGet 包的数量和版本不同而变化。
CLR 类型的;如果 XAML 所引用的 CLR 类型在其他被引用的程序集,那么编译 XAML 的时候就可以直接引用这些程序集,因为他们已经编译好了。...这样,在 MarkupCompilePass2 执行的时候,会获得一个包含原本在统一程序集的 CLR 类型的临时程序集引用,这样就可以继续完成 XAML 格式的编译了。...关于引用换成 ReferencePath 的内容,可以阅读我的另一篇博客了解更多: 在 Target 中获取项目引用的所有依赖(dll/NuGet/Project)的路径 在使用 ReferencePath...的情况下,无论是项目引用还是 NuGet 包引用,都会被换成普通的 dll 引用,因为这个时候目标项目都已经编译完成,包含可以被引用的程序集。...本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
---- 无法编译 .NET Framework 4.5 项目 为了更广泛的适用于各种项目,我的一些库兼容的框架版本是非常古老的(比如下图截取的这张)。...不过考虑到大家基本上都是用 Visual Studio 来开发,所以上述操作在 VS 中的水土不服也需要特别处理一下。...于是这种方式安装的 NuGet 包不像其他的 NuGet 包那样可以传递到其他引用它的项目。...如果不想迁移,也可以试试官方的方法。但我不想尝试,所以就在线等 TA 在评论区的回复吧! 4. 不想折腾之一:还是装回 VS2019 吧 有时候,你可能会遇到各种意料之外的问题,超出我上面列举的坑。...版本的 .NET Framework 引用包。
我们知道VS开发中引用的程序集和运行时的程序集来源于不同的地方,前者来源于%ProgramFiles%\Reference Assemblies\Microsoft\Framework\.NETFramework...这可以从VS的添加引用对话框看出来。照理说两者应该一直才对,但是你是否发现了它们之间存在着差异吗? ?...AppendTrailingSlash { get; set; } 5: public bool LowercaseUrls { get; set; } 6: } 但是当我试图在代码中使用这两个属性的时候...那么唯一的解释是VS引用的System.Web.dll中的该类型并不包含这两个属性,为此我通过Reflector从%ProgramFiles%\Reference Assemblies\Microsoft...\Framework\.NETFramework\v4.0中加载了该程序集。
常见环境 从 Visual Studio .NET 到 Visual Studio 2013,C++ 编译器和工具的每个主版本都包含一个新的独立版本的 Microsoft C 运行 (CRT) 库。...CRT 的这些独立版本彼此独立,并在不同程度上彼此不兼容。...ProductCode="{01FAEC41-B3BC-44F4-B185-5E8475AEB855}" 我们用到的是WixBundleRollbackLog_vcRuntimeAdditional_x86,在注册表中搜索对应产品...HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework.../policy/v2.0') 这个获取的版本比较粗略(类似于v2.0/v4.0)不建议使用这个地址。
如果补救成功,可以设置 e.Handled = true 来阻止异常继续让程序崩溃退出。但是,如果是后台线程抛出了异常呢?并没有 Dispatcher 可以用。所以我们就束手就擒让程序自己退出吗?...比如 WPF 的触摸模块发生了异常,开发者知道如何恢复吗?并不知道,还不如结束掉程序然后重启呢!...的哪个地方,我再用一段代码标注一下,大概在这里: 1 2 3 4 5 6 7 8 9 NETFramework,Version=v4.8" /> ++ 4.0 国际许可协议 进行许可。
再确定要找的mono版本,网上难找到.net与mono的版本对应关系了,这个也要最好最低兼容.net4.0的,我最初选择的是Mono 2.10.8(相当于NET with asp.net 4.0?)...为了省事不自己编译,我偏向直接下载,结果发现从Mono 2.10.8起大都以gtksharp2.12.11为基础(这就与上面的IDE选择矛盾了因为它至少要2.12.22),我只能找往下的版本,结果一路下来有好多不提供...windows installer版本中的,我最终选择了mono-3.12.0-gtksharp-2.12.26-win32-1,它能满足2.12.22的最低要求。...Version=v4.0] [HKEY_LOCAL_MACHINE|SOFTWARE|Microsoft|.NETFramework|v4.0.30319|SKUs|.NETFramework,Version...wordpress可以稍作修改在其上运行。 Phalanger完全可以做成跟ironpy,ironruby一样,变成mono/lib下的语言组件。 这是以后的话题了。
大家好,又见面了,我是你们的朋友全栈君。...在Windows Installer中分别在Redistributables和Registry中设置就行了,特别是注册,可以直接把目录从你自己的电脑上拖过来。...1.先在Bootstrapper工程中引用WixNetFxExtension.dll 这个动态链接库中 已经包含了各种.net 版本 2.在Chain 元素中添加安装清单。...但是 所以在Bootstrapper中的安装程序都是没有窗口的。安装顺序一个个默默的装完,没有上一步,下一步。和Click Once部署的一样。一次性装完。...很多PC软件都是可以自动检测版本,下载更新,VS自带的ClickOnce也可以运行前自己动检测,发现新版本会去提示下载更新,需要借助一个发布网站就行。但那个可配置性就更 低了。
最近在做一个需求是导出较大的excel,本文是记录我在做需求过程中遇到的几个问题和解题方法,给大家分享一下,一来可以帮助同样遇到问题的朋友,二呢,各位大神也许有更好的方法可以指点小弟一下,让我顺便学习一下...2Fdev16.query%3FappId%3DDev16IDEF1%26l%3DZH-CN%26k%3Dk(System.Random.%2523ctor);k(TargetFrameworkMoniker-.NETFramework...,Version%3Dv4.0);k(DevLang-csharp)%26rd%3Dtrue&view=netframework-4.8)也就是说生成一样的文件名,然后我们在通过 github里可以看到...nuget最新版 是去年12月份发布,并没有包含上面的更改; 所以呢 要么github下载最新版编译要么自己解决,想了想如果换版本的话以前的功能可能会影响到所以,我们就在外面加一把小锁吧!如图 ?...总结: 1.导出大数据用SXSSFWorkbook 2.构建SXSSFWorkbook 时候lock或者自己编译最新版本 3.我们做导出时,ef查询数据后记得加AsNoTracking 关闭绑定跟踪。
昨天调用特殊的Dll 报错:混合模式程序集是针对“v1.1.4322”版的运行时生成的,在没有配置其他信息,无法在 4.0 运行时中加载该程序。... 4.0..." sku=".NETFramework,Version=v4.8"/> 保存然后重新生成就好啦 生成好后在目录下会出现一个“******.exe.config...理解就是程序的配置文件 image.png “如果要单独把软件拖出来记得把这个文件也一并拖出哦,不然还会报上面的错误” 这个“*****.pdb”文件是程序数据库(PDB) 文件保存着调试和项目状态信息,使用这些信息可以对程序的调试配置进行增量...最关键的是:当程序异常输出异常时,可以准确的输出报错的代码函数与行数 简简单单,记得点赞分享哦
反射能够调用一些私有方法和字段等 本章由来 写这篇的原因其实就是上面我们说到的反射作用的场景第二条,还是我自己做的那个商盘通的程序,后端用的.netframework4.0的框架,以前连接数据库都是自己封装好的...,只装了4.0的用户打开程序肯定会报错,影响用户体验,于是我就自己想了一个思路,把sqlsugar相关的所有操作都封装好一个类库里,然后通过判断用户的.netframework的版本,来实现是否自动调用新的这个类库...嗯,由上面的思路看,完美,然后就开始做相关的Demo,结果很快写完后测试立马被啪啪的打脸,发现低版本框架的程序不能调用高版本的类库,也就是说我的主程序一直用的.netframework4.0,不能调用为....netframework4.5的类库,所以这个方案就被否决了,不过最终不能用上,不代表没有价值,反射调用类库的方法还是要学习的,而且我也把它调用成功的封装了一个单元文件,直接引用即可。...检测.NetFrameWork版本 项目中DotNetApi.cs即是可以检测.netframework的版本,里面的GetDotNetVersion的方法就是检测方法,直接上代码: /// <summary
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。...https://www.cnblogs.com/yunfeifei/p/4106318.html Thread Thread默认为前台线程,也可以设置为后台线程,主程序必须等待线程执行完毕后才可退出程序...开启一个新线程,线程不做任何操作,都要消耗1M左右的内存,所以是伪多线程,感觉就是在一个cpu上一个一个的执行,和之前的顺序有差别。 ?...view=netframework-4.8 ThreadPoll是线程池 其目的是为了减少开启新线程消耗的资源(使用线程池中的空闲线程,不必在开启新线程,以及统一管理线程(线程池中的线程执行完毕后,...view=netframework-4.8 创建一个task也有3种方式来操作,Task.Factory.StartNew()、Task run()、new Task(), 前面2种是一样的,不需要用
: error MSB3644: 未找到框架“.NETFramework,Version=v4.7.1”的引用程序集。...> Package A 包生成版本为 1.3.2,这个时候,我再引用上述两个包,发现编译没问题,但是在运行时报错了。...结论: 由于 引用的 1.3.2 版本, 然而 CLR 在加载程序集时,找不到 Version 为 1.3.2 的DLL,于是就找原本项目引用的 1.2.3 版本,没有找到,于是报错。理清楚了。...问题3:target framework 为 .net 45 的项目,可以在 Linux 系统下编译吗?...程序集的打包就遇到了无法在 Linux上打包 net45 程序集的问题,通过在 Github上跟踪 Issue,终于发现了解决办法。
服务器是Windows Server 2012,我自己安装了一个MySql数据库,然后一个Web程序和客户端程序都想访问数据库,但是遇到一堆问题。...主要是我仍然坚持使用.net 2.0,挂接MySql.Data 6.7.4版本。解决后记录一下 1.IIS访问数据库的问题 未能加载文件或程序集“MySql.Data”或它的某一个依赖项。...找到的程序集清单定义与程序集引用不匹配。...异常来自 HRESULT:0x80131040 解决:把应用程序池设置为4.0 2.客户端应用程序在服务器上运行,无法连接数据库的问题 System.BadImageFormatException:...> 4.0" sku=".NETFramework,Version=v4.0"/>
在项目编译成 dll 之前,如何分析项目的所有依赖呢?可以在在项目的 Target 中去收集项目的依赖。...然而实际上如果真的编译这个项目,会发现我们得到的结果有一些问题: 实际上其值就是写到每一个 Reference 里面的字符串的集合 比如引用了 System.Xaml,那么这里就会是 System.Xaml...注意,我在 BeforeTargets 上增加了一个 ResolveAssemblyReference。...,ReferencePath 则是将所有的 dll 的路径也输出了,而且即便是项目引用,项目编译好的 dll 的路径也在。...\v4.5\Facades\System.Xml.XmlSerializer.dll 解读原因 解析引用的 dll 的路径的 Task 是 ResolveAssemblyReference,你可以在 Microsoft.NET.Sdk
所以我们自己实现一个 ---- 这里是我们创建的异步版本的ManualResetEvent。 实际上这里的本质就是使用了一个TaskCompletionSource。...可以通过SetResult方法标识task的完成情况。...当然还有很重要的一点是这里涉及多线程的判断,赋值操作,所以所有的这些方法必须放置在同步区进行。...view=netframework-4.8) ---- 本文会经常更新,请阅读原文: https://xinyuehtx.github.io/post/%E5%AE%9E%E7%8E%B0%E4%B8%...本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
SP2● 最低:NetFramework:4.0● 下载地址:https://www.microsoft.com/en-us/download/details.aspx?...id=34595版本特性● 命数量增加到1000多条● 定时执行Job:增加定时执行Job,可以编写计划任务程序● 编码智能提示:在ISE开发环境中,支持编码智能提示,大大方便了代码的编写效率● 模块自动加载...● 最低:.NET Core 2.0版本● 下载地址:无版本特性● 基于NetCore2.0 实现了真正意义上的跨平台。可以在Windows、Linux、MacOS运行PowerShell6.0。...● 增加了两个小版本更新:6.1 集成在Windows Server 2019版本当中,命令增加到1900多条;6.2 版本修复了一些Bug、在本地语言支持方面提供了增强功能8、PowerShell7.0... 7调用DSC资源的能力(实验性)我正在参与2023腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表
我们在2019-12-1-实现一种异步版本的ManualResetEvent - huangtengxiao给大家介绍了异步版本的ManualResetEvent。...此时对应的task可以继续执行。 分析 不过可以注意到上面的代码都是先调用WaitOneAsync的方法先得到返回。而AutoResetEvent在set时,获得同步锁的线程是随机的。...这里实际上无伤大雅,因为顺序也是随机的一种情况,在使用AutoResetEvent本身就不应该依赖顺序。...另外,我们在2019-12-1-使用SemaphoreSlim实现异步等待 - huangtengxiao中提到的SemaphoreSlim对象将最大并发数设置为1时,完全可以实现异步版本的AutoResetEvent...view=netframework-4.8) ---- 本文会经常更新,请阅读原文: https://xinyuehtx.github.io/post/%E5%AE%9E%E7%8E%B0%E4%B8%
添加“BootstrapperCore.dll”引用 现在,为此 WPF UI 项目添加“BootstrapperCore.dll”引用: 在项目的“依赖项”上右键,“添加引用…”; 点击“浏览…”;...如果大家感兴趣使用 NuGet 的方式来完成整个打包项目的构建,替代现在单独安装的方式,我可以单独再写一篇高级教程。 2....但是我们可以留意到 元素的全部内容跟一个标准 .NET Framework 应用程序的配置文件中的 元素一模一样,所以实际上我推荐把此文件放到 WPF UI 项目中...不要设置成任何类似 v4.6.2、v4.8、.NETFramework,Version=v4.5 之类的值。...附源代码 附上必要的源码,避免你在阅读教程时因模板文件的版本差异造成一些意料之外的问题。
领取专属 10元无门槛券
手把手带您无忧上云