Bin目录用来保存项目生成后程序集,它有Debug和Release两个版本,分别对应的文件夹为bin/Debug和bin/Release,这个文件夹是默认的输出路径,我们可以通过:项目属性—>配置属性—>输出路径来修改。 obj目录是用来保存每个模块的编译结果,在.NET中,编译是分模块进行的,编译整个完成后会合并为一个.DLL或.EXE保存到bin目录下。因为每次编译时默认都是采用增量编译,即只重新编译改变了的模块,obj保存每个模块的编译结果,用来加快编译速度。是否采用增量编译,可以通过:项目属性—>配置属性—>高级—>增量编译来设置
生成dll方法——整个解决方案下的项目,右击选择属性,点击进入,然后选择生成;修改输出路径为适合的输出路径;然后点击
大家好,又见面了,我是你们的朋友全栈君。 运行vs程序的时候,报错严重性 代码 说明 项目 文件 行 禁止显示状态 错误 LNK2019 无法解析的外部符号 "__declspec(dlli
我有一个强大的功能,这个功能就是在 Linux 下使用 GDI 转换 EMF 格式图片为 png 图片,但是有一些有趣的图片会让转换的进程炸掉。因此我就想让转换服务放在独立的进程,通过进程间调用,也就是命令行调用传入参数的方式,让另一个进程转换图片。而此时就会遇到一个问题,如何让这个进程也被构建,然后输出到输出路径
在开发的时候,我有一个很大的项目,里面包含了 1000 个项目,但是我需要调试里面的一个库,如果直接修改这个库,会让 VisualStudio 重新编译 90 个项目,于是这样的调试的速度就太慢 本文告诉大家如何通过外部调试的方法,每次调试只需要编译这个库不需要编译其他的项目
1、对C#反射机制的理解 2、概念理解后,必须找到方法去完成,给出管理的主要语法 3、最终给出实用的例子,反射出来dll中的方法 参考: C#反射,MSDN编程指南 反射是一个程序集发现及运行的过程,通过反射可以得到*.exe或*.dll等程序集内部的信息。使用反射可以看到一个程序集内部的接口、类、方法、字段、属性、特性等等信息。在System.Reflection命名空间内包含多个反射常用的类,下面表格列出了常用的几个类。 类型 作用 Assembly 通过此类可以加载操纵一个程序集,并获
在这之前,我写了一系列关于代码生成和T4相关的文章,而我现在也试图将T4引入我们自己的开发框架。在实践中遇到了一些问题,也解决了不少问题。如果你也在进行T4相关的开发,相信你也一定会遇到这些问题。为此,特意将这些问题和解决方案与朋友们分享,希望在遇到这些问题的时候少走弯路。本篇文章介绍的是两个重要的话题:程序集锁定和调试。 目录 一、程序集引用导致的编译问题 二、T4引擎对引用程序集的锁定 三、Debugger.Break导致VS 2010的Crash
DLL(Dynamic Link Library)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库-静态链接库-动态链接库”的时代。 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib中的指令都被直接包含在最终生成的EXE文件中了。但是若使用DLL,该DLL不必被包含在最终EXE文件中,EXE文件执行时可以“动态”地引用和卸载这个与EXE独立的DLL文件。静态链接库和动态链接库的另外一个区别在于静态链接库
而大部分情况下,我们需要引用C++写的dll,如果你的dll是使用 DllImport来导入的,那么它就属于非托管dll,这种dll无法直接嵌入exe中,需要借助工具:Costura.Fody,该工具可以使用VS直接下载
使用 MonoTouch 做 iOS 开发, 由于 MonoDevelop 和 VS 2010 相比, 功能差的太多, 通常会相应的建立两个项目, 一个是 MonoDevelop 项目, 在 OSX 下使用, 一个是 VS 项目, 在 Windows 下使用, 在 Windows 系统下进行编码, 之后再在 OSX 下进行调试。 不过, 默认的 VS 项目在添加 MonoTouch 项目的 CS 源文件之后, 经常编译出错, 而且如果安装了 Resharper 之类的插件之话, 也会得到一大堆错误信息, 令人感觉非常恶心。 经过一番研究发现是因为 VS 不能引用 MonoTouch 的几个核心 dll 文件导致的, 包括 mscorlib.dll , System.dll , System.Core.dll 等, 找到原因之后, 对应的解决方法就有了。
本文告诉大家如何做源代码包,源代码包的意思是安装的包不是安装dll的方式,而是使用源代码的方式。也就是最后是编译包的源代码而不是添加dll,这个方式是解决想要把项目分小,功能分细,但是不希望项目有很多的 dll,因为如果项目有很多 dll 会让软件打开的时间比较长
减小文件搜索范围 配置 resolve.modules Webpack的resolve.modules配置模块库(即 node_modules)所在的位置,在 js 里出现 import 'vue' 这样不是相对、也不是绝对路径的写法时,会去 node_modules 目录下找。但是默认的配置,会采用向上递归搜索的方式去寻找,但通常项目目录里只有一个node_modules,且是在项目根目录,为了减少搜索范围,可以直接写明 node_modules 的全路径;同样,对于别名(`alias)的配置,亦当如此:
本文来安利大家 Obfuscar 这个好用的基于 MIT 协议开源的混淆工具。这是一个非常老牌的混淆工具,从 2014 年就对外分发,如今已有累计 495.5K 的 nuget 下载量。而且此工具也在不断持续迭代更新,完全支持 dotnet 6 版本,对 WPF 和 WinForms 等等的支持也是非常好,支持多个不同混淆方式和等级的配置,支持混淆之后生成符号文件。本文将来告诉大家如何使用此混淆工具,以及此工具能达成的效果和此工具混淆的原理
EasyRTSPServer是一套稳定、高效、可靠、多平台支持的RTSP-Server组件,适用于各种不同行业的手机视频服务需求,以Android手机摄像头为视频源,进行对外的流媒体直播服务输出,且能以Android/Windows作为运行环境,通过二次开发接入各种视频源、桌面源,对外提供源直播服务。
在项目中使用了一段时间的 Webpack ,得益于其多元的功能支持和配置定制,得到了很多本地编译和依赖管理的帮助。在搭建好配置和架构之后,开发过程中可以不再关注模块的组织、载入、转义、合并、精简、兼容等各种方面的工程问题,全部交给 Webpack 来处理。效率和体验都得到了不小的提升。本篇文章就是在对使用 Webpack 过程中的关键配置和方法做一些总结和沉淀。 本文是一些零散的功能记录、关键点配置和 Tips,大部分从使用过程中总结而来,并不是手册翻译也不是入门讲解,正在入手 Webpack 或在使用中遇
本文转载:http://www.cnblogs.com/Charles2008/archive/2010/06/24/1764510.html
简介 尽管进程都设置了环境变量,它们往往被用户,开发者甚至是系统本身所忽略。对于一个像样的系统来说,环境变量就是其最根本,这里的系统包括但不仅限于Unix (Linux, BSD), Windows以及OS X。在微软操作系统的世界中,环境变量在其第一个版本DOS时期就已经出现,且一直沿用至今。环境变量得到重视还得从2014年9月份爆发的ShellShock漏洞说起。 关于ShellShock可参考 《ShellShock(破壳)漏洞余威不减:新ShellShock蠕虫扫描大量脆弱主机展开攻击》 《SEE
进程注入是将任意代码写入已经运行的进程中并执行,可以用来逃避检测对目标目标进程中的敏感信息进行读/写/执行访问,还可以更改该进程的行为。
想要利用Revit API开发环境,首先需要进行平台的搭建,搭建平台环境分为两部分,第一部分为Revit平台,第二部分为VS平台。利用我们上期提到的那些工具既可以完成,主要有以下几步:
本文带大家走进SourceYard开发之旅 在项目开发中,将一个大的项目拆为多个小项目解耦,减少模块之间的耦合。因为如果将代码放在一起,即使有团队的约束,但只要能写出的代码就会有小伙伴写出,很快就发现各个模块耦合的代码很多。但是对一个项目的拆分会让拆分出来的每一个项目都编译出一个 dll 增加运行文件的启动时间。 在开发中,常常会用到很多工具类,这些小轮子很多的功能基本就只有一个类,如何对这些小轮子进行管理?通过复制代码还是通过 Nuget 管理?
本文和大家介绍一个 Hack 的方式,通过此方式可实现访问 UNO 框架里面的 internal 不公开成员,调用 UNO 框架里面的不公开的 API 方法和属性,访问 UNO 里面不公开的类型
在众多.NET应用下的代码生成方案中,比如CodeDOM,BuildProvider, 我觉得T4是最好的一种。关于T4的基本概念和模板结果,可以参考我的文章《基于T4的代码生成方式》。如果要了解T4具体的应用,则可以参考我的文章《创建代码生成器可以很简单:如何通过T4模板生成代码?》(上篇)(下篇)。如果你编写T4模板,你不得不面对一个问题——如何引用一个程序集?VS 2010采用了与VS2008不同的程序集引用的解析机制。本篇文章为你介绍在VS2010下5种不同的程序集引用的方式。 目录 一
http://blog.csdn.net/dodomouse/article/details/12843821
为啥做这个呢,因为要将公司内部的老的.NET程序所引用的DLL进行统一管理。这里服务端使用了一个叫做NuGetServer(官网:NuGet Server)的开源工具,部署在内部的Web服务器上。
DLL —— Dynamic Link Library(动态链接库文件),这里以Window平台为例。
在官网上下载下来的 tess4j 的zip,初见时看的云里雾里的,原以为是个jar,直接引用就好了,结果竟是个zip。网上查一下用法,各种说法,各种菜,全是误导,自己不懂就敢瞎说…
COM是微软公司为了计算机工业的软件生产更加符合人类的行为方式开发的一种新的软件开发技术。在COM构架下,人们可以开发出各种各样的功能专一的组件,然后将它们按照需要组合起来,构成复杂的应用系统。
昨晚上看到VS2022的新的Preview版本发布,就连同VS2019一起升级到了最新版。
本文告诉大家 Resharper 家(JetBrains)开源的 Refasmer 工具,这个工具的功能就是从现有的 DLL 或 EXE 程序集里面,将所有的公开成员导出,重新打出新的 DLL 或 EXE 程序集。此时打出的新的程序集里面的方法都不包含实现,而是只有定义,这样的程序集被成为仅作为引用用途的程序集,也就是 Reference assemblies 的意思,这也就是 Refasmer 命名来源
最近要开发一个控件给同事用,开发中会引用一些第三方DLL,这样交给用户很不方便,希望的效果是直接交付一个DLL文件。网上找了一些资料。 1. 使用 Costura.Fody ,这个强大之处是可以在build阶段直接将依赖的DLL合并在目标EXE中,支持非托管DLL进行mixed mode 打包,不足之处是 只能将DLL合并到EXE中,不支持DLL和DLL的合并,目前满足不了我的需求。 参考资料 http://www.cnblogs.com/instance/archive/2015/10/09
下面咱们先了解Assembly.Load(path).CreateInstance(className)
今天看了个验证码识别的代码,其中引用到了mshtml.dll,找了半天原来就是microsoft.mshtml.dll。查这个dll的时候还发现了好几篇关于这个dll添加问题的文章。顺便看了下,原来这个dll有三个,添加引用时要注意了。 第一篇文章: 1.添加引用的问题 一般在开发环境下会在三个地方存有microsoft.mshtml.dll文件。所以在添加引用时,也会出现三个看似一样的项。对于开发者来说,引用其中任何一个都不会影响到正常的开发。但问题会出在软件发布之后!在客户的机子上运行时,通常会提示文件的签名不正确,无法加载。 解决的方法就是删除现在对mshtml引用。重新选择正确引用。就是选最下面那个。路径是:X:\Program Files\Microsoft.NET\Primary Interop Assemblies\Microsoft.mshtml.dll 。把引用对话框拉大,可以看到文件的路径。 2.类型选择错误 如果问题一解决了,或者开始就选对了。可能客户机了上运行又报 System._ComObject 无法强制转换到 HtmlWIndow2Class 、HtmlDocumentClass或其它类似的错误。在开发者的机子上运行,却完全正常。这时通常我们会狂抓,完全不知是什么原因!在开发环境下用obj.toString()显示是HtmlXXXXClass在客户机上得到结果却是System._ComObject.解决方法很简单用HtmlXXXX替换HtmlXXXXClass即可。 第二篇文章: 也是用到了Microsoft mshtml.dll程序集,但是安装在用户电脑后,异常: System.Reflection.TargetInvocationException: 调用的目标发生了异常。 —> System.IO.FileNotFoundException: 未能加载文件或程序集“Microsoft.mshtml, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或它的某一个依赖项。系统找不到指定的文件。 选择高亮的那个dll就可以了。 属性选择: 复制本地=True 特定版本=false; 原因是: 因为 Microsoft.mshtmal.dll 这个 dll 是从 system32 文件夹下的 mshtml.tlb(COM 类型库文件)中导出的,因此我们只需要用 VS2008 自带的 TlbImp.exe COM 类型库导出工具将这个 tlb 文件再导一遍就可以了。
Tensorflow2.2.0安装成功 引用时显示DLL load failed:找不到指定模块 解决方法
本文使用的NVelocity版本为1.1.1,应该是目前为止最新的版本吧,前几天在google上找了一个自称是NVelocity 1.6.1 bate2的dll,下载下来一看更新时间是2009年的,还没版本NVelocity 1.1.1(2010年出的) 新呢! 本文目录: 一、资源、文档下载: 官方下载地址与参考文档 其他下载地址(版本比较低不建议下载) 本文NVelocity 1.1.1 dll与示例下载 NVelocity 使用文档下载 二、使用步骤。 a) 创建Velocity 引擎(
经过 Mono 团队的不懈努力,原本专属于 Win32 平台的 GDI+ 终于可以跨平台了,不过这中间还有好多的故事和好多的坑。
现在开发基本都是使用npm或者yarns进行依赖管理,随便引入几个依赖就会使得最终打包的结构臃肿,再加上开发者可能对依赖的包并没有特别统一管理,需要什么就引入什么,不会去关心互相之间的关系。
在 MSBuild 中有一些特殊字符,如 $ @ % ' 等,本文介绍他们的含义,如何使用他们,以及你真的需要这些字符的时候如何编写他们。
C++静态库与动态库
上篇从多线程打包和缩小打包作用域两个方面入手,对webpack打包层面做出优化。本篇描述从动态链接库思想方面继续深入探究打包层面的深度优化。
但这个功能在使用的时候,不是很方便,电脑版微信的截图功能就比较丰富,使用也很方便。
在codeproject上看到了一个非常有意思的应用,windows mobile上看星座图。试想下面一个场景,在北京寒冷冬天的一个晚上,西北风把城市上空的污染物吹跑了,用肉眼就可以看到明亮的星星,于是问自己正南方那颗明亮的星星是啥名字?搞笑,我又不是天文学爱好者,我怎么知道。这时候,我不慌不忙的拿出Windows Mobile手机,运行一个程序,输入我的时区和城市,就能够看到我现在的天空中的星星,还能够查出它们分别是几等星,这是不是很有意思呢。 这个创意来自于希腊的Giannakakis Kost
dotnet [--version] [--info] [--list-runtimes] [--list-sdks]
一. 改单dll为双dll 因为上图原因,使用CommonsChunkPlugin时,导致其打包出来的vendors.js内的模块ID会因为其他文件引用模块数量的变化而变化。 所以现利用DllPlug
C#开发者在开发WinForm程序、Asp.Net Web(MVC)程序等,不可避免的在项目中引用许多第三方的DLL程序集,
针对与webpack项目打包,我们正常做的最多的就是脚手架安装,后run build直接部署,不会去做过多的处理。
[PHP] ; PHP还是一个不断发展的工具,其功能还在不断地删减 ; 而php.ini的设置更改可以反映出相当的变化, ; 在使用新的PHP版本前,研究一下php.ini会有好处的
[PHP] ; PHP还是一个不断发展的工具,其功能还在不断地删减 ; 而php.ini的设置更改可以反映出相当的变化, ; 在使用新的PHP版本前,研究一下php.ini会有好处的 ;;;;;;;;;;;;;;;;;;; ; 关于这个文件 ; ;;;;;;;;;;;;;;;;;;; ; 这个文件控制了PHP许多方面的观点。为了让PHP读取这个文件,它必须被命名为 ; 'php.ini'。PHP 将在这些地方依次查找该文件:当前工作目录;环境变量PHPRC ; 指明的路径;编译时指定的路径。 ; 在windows下,编译时的路径是Windows安装目录。 ; 在命令行模式下,php.ini的查找路径可以用 -c 参数替代。 ; 该文件的语法非常简单。空白字符和用分号';'开始的行被简单地忽略(就象你可能 ; 猜到的一样)。 章节标题(例如 : [Foo])也被简单地忽略,即使将来它们可能 ; 有某种的意义。 ; ; 指示被指定使用如下语法: ; 指示标识符 = 值 ; directive = value ; 指示标识符 是 *大小写敏感的* - foo=bar 不同于 FOO = bar。 ; ; 值可以是一个字符串,一个数字,一个 PHP 常量 (如: E_ALL or M_PI), INI 常量中的 ; 一个 (On, Off, True, False, Yes, No and None) ,或是一个表达式 ; (如: E_ALL & ~E_NOTICE), 或是用引号括起来的字符串(" foo" ). ; ; INI 文件的表达式被限制于位运算符和括号。 ; | bitwise OR ; & bitwise AND ; ~ bitwise NOT ; ! boolean NOT ; ; 布尔标志可用 1, On, True or Yes 这些值置于开的状态。 ; 它们可用 0, Off, False or No 这些值置于关的状态。 ; ; 一个空字符串可以用在等号后不写任何东西表示,或者用 None 关键字: ; ; foo = ; 将foo置为空字符串 ; foo = none ; 将foo置为空字符串 ; foo = " none" ; 将foo置为字符串'none' ; ; 如果你值设置中使用常量,而这些常量属于动态调入的扩展库(不是 PHP 的扩展,就是 ; Zend 的扩展),你仅可以调入这些扩展的行*之后*使用这些常量。 ; ; 所有在 php.ini-dist 文件里设定的值与内建的默认值相同(这是说,如果 php.ini ; 没被使用或者你删掉了这些行,默认值与之相同)。 ;;;;;;;;;;;;;;;;;;;; ; 语言选项 ; ;;;;;;;;;;;;;;;;;;;; engine = On ; 使 PHP scripting language engine(PHP 脚本语言引擎)在 Apache下有效。 short_open_tag = On ; 允许 tags 将被识别。 asp_tags = Off ; 允许ASP-style tags precision = 14 ; 浮点类型数显示时的有效位数 y2k_compliance = Off ; 是否打开 2000年适应 (可能在非Y2K适应的浏览器中导致问题) output_buffering = Off ; 输出缓存允许你甚至在输出正文内容之后发送 header(标头,包括cookies)行 ; 其代价是输出层减慢一点点速度。你可以使用输出缓存在运行时打开输出缓存, ; 或者在这里将指示设为 On 而使得所有文件的输出缓存打开。 output_handler = ; 你可以重定向你的脚本的所有输出到一个函数, ; 那样做可能对处理或以日志记录它有用。 ; 例如若你将这个output_handler 设为" ob_gzhandler" , ; 则输出会被透明地为支持gzip或deflate编码的浏览器压缩。 ; 设一个输出处理器自动地打开输出缓冲。 implicit_flush = Off ; 强制flush(刷新)让PHP 告诉输出层在每个输出块之后自动刷新自身数据。 ; 这等效于在每个 print() 或 echo() 调用和每个 HTML 块后调用flush()函数。 ; 打开这项设置会导致严重的运行时冲突,建议仅在debug过程中打开。 allow_call_time_pass_reference = On ; 是否让强迫函数调用时按引用传递参数。这一方法遭到抗议, ; 并可能在将来版本的PHP/Zend里不再支持。 ; 受到鼓励的指定哪些参数按引用传递的方法是在函数声明里。 ; 你被鼓励尝试关闭这一选项并确认你的脚本仍能正常工作,以保证在将来版本的语言里 ; 它们仍能工作。(你将在每次使用
这个文件控制了PHP许多方面的观点。为了让PHP读取这个文件,它必须被命名为 'php.ini'。PHP 将在这些地方依次查找该文件:当前工作目录;环境变量PHPRC
Emgu CV 是.NET平台下对OpenCV图像处理库的封装。也就是OpenCV的.NET版。它运行在.NET兼容的编程语言下调用OpenCV的函数,如C#、VB、VC++等。同时这个封装库可以在Mono下编译和在Linux / Mac OS X上运行。Emgu Cv的优势在于.net非常完美的界面,给用户操作带来非常直观的感觉。Emgu Cv每个版本都有修改一部分函数,在兼容旧版本下做的不是很好。本书主要采用VS2013+EmguCv3.0版本,希望读者也采用相同的版本进行学习,从而避免一些版本兼容上的问题。在国内并不流行Emgu Cv,因此关于Emgu Cv的资料比较少,从而导致了新手学习起来比较费劲,同时使更多想去学习Emgu Cv的人放弃学习,这样的一个恶性循环。
领取专属 10元无门槛券
手把手带您无忧上云