首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Roslyn 解决找不到 SolutionDir 属性

在旧版本的 csproj 格式也就是 Franken-proj 格式,可以使用 SolutionDir 拿到当前sln文件所在的文件夹,但是在 SDK Style 格式的项目文件,是拿不到这个属性的,本文告诉大家如何做到兼容之前的逻辑..." AfterTargets="BeforeBuild"> SolutionDir)"/> 如果我使用 dotnet...命令构建这个 csproj 文件,那么将会输出如下代码 warning : Solution *Undefined* 如果我使用 dotnet 命令构建 sln 文件,那么可以输出 sln 所在的文件夹...这就是不同点 但是如果我只是想通过 dotnet 或 msbuild 命令构建 csproj 文件,而不构建 sln 文件,此时还需要使用 SolutionDir 属性。...> 上面代码的 $(MSBuildThisFileDirectory) 就是获取当前文件所在的文件夹,而当前文件是放在和 sln 文件相同的文件夹

38130

黑客是如何监视你的手机的?

这里使用的是虚拟机,实际中需要外网能访问的服务器,这样手机应用才能正常连接到服务器。 ? readinfo.php 的功能来看明显是不需要这几个功能的,列入嫌疑名单,开始下一步审查。...2、审查应用程序使用的进程间通信机制 ? 这里我们只发现了一个调用主Activity的机制,本步检查安全。 3、分析源码中开放的端口、共享/传输的数据,以及网络连接 ?...二、软件实现 上面是当遇到一个APP时的审查操作,为了更加深入的了解恶意软件的工作原理,此处我们编写一个简单恶意APP(也就是上面我们分析的APP),仅读取联系人信息。...希望此文能帮助大家更好的理解恶意软件工作原理,帮助大家更好的防范恶意软件,相信大家也都是遵纪守法的好公民,学习只是为了防身,嗯。

1.1K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    .NET Core工程编译事件$(TargetDir)变量为空引发的思考

    前言 最近客户反馈,为啥不用xcopy命令代替我自己写的命令来完成插件编译复制: 我的: call "$(SolutionDir)tools\tools\Magicodes.CmdTools.exe...\wwwroot\PlugIns\" 我深以为然,xcopy是我之前经常用来做编译复制的命令,为啥我后面自己整了一个工具来复制呢?...在.NET Core的工程中,很多变量是获取不到值的,如下命令: echo 准备复制"$(TargetPath)" call...比如说这篇: https://github.com/dotnet/sdk/issues/1055 $(TargetPath) or $(TargetDir) are empty on PostBuild...大意似乎是,编译事件被target元素代替了。但是大哥,都这么久了,为啥通过项目工程的界面编辑,生成的元素还是PostBuildEvent,你们这不是坑人么。。。

    87210

    dotnet 特性 DynamicallyInvokable 是用来做什么的

    我在 Linq 很多函数都看到 __DynamicallyInvokable 这个特性,这是一个没有官方文档的特性,也许是用来优化反射 在堆栈 网找到了以下描述 这个 __DynamicallyInvokable...特性是没有官方文档的,好像是在 .NET Framework 4.5 的一个优化添加的特性,这个特性看起来是在优化反射缓存的值,可以让随后的反射代码运行更快。...从源代码里面的 System.Reflection.Assembly.cs 文件可以看到以下描述 // 每个神奇的(blessed)的 API 都会添加 "__DynamicallyInvokableAttribute...be annotated with a "__DynamicallyInvokableAttribute". // 这个 "__DynamicallyInvokableAttribute" 特性类是在他自己的程序集定义...同时是 TypeDef 类型 // So the ctor is always a MethodDef and the type a TypeDef. // 我们缓存此构造的 MethodDef

    1.1K10

    手把手教你写 Roslyn 修改编译

    本文告诉大家如何使用 WriteLinesToFile 先把参数写入文件,通过文件的方式传输参数 Roslyn 获得 sln 文件所在的文件夹 我找了很久没有发现 SolutionDir 这个定义,所以只能通过一个不通用的方法找到...指定的 $(SolutionDir) 是空 在新的项目格式,找了很久都没有找到 $(SolutionDir) 的定义和找到运行的 sln 文件的定义的方法 于是通过 Directory.Build.props...也就是最后是编译包的源代码而不是添加dll,这个方式是解决想要把项目分小,功能分细,但是不希望项目有很多的 dll,因为如果项目有很多 dll 会让软件打开的时间比较长 Roslyn NameSyntax...只需要在项目文件夹,或者磁盘的文件夹,如 E:\ 放下本文提供的 Directory.Build.props 文件,整个文件夹内的控制台项目就会输出 林德熙是逗比 想要知道是怎么做的,请看下面 Roslyn...如何使用 Directory.Build.props 文件定义编译 dotnet core 通过修改文件头的方式隐藏控制台窗口 在带界面的 dotnet core 程序运行的时候就会出现一个控制台窗口,

    2.1K20

    当 dotnet-monitor 遇上 Prometheus, 是种什么样的体验?

    简单理解就是把上面的几种诊断工具进行了包装, 并且暴露了 对应的 REST API, 让诊断变的更容易, 在去年, dotnet-monitor 还是一个实验性的诊断工具, 当时我也写了一篇文章介绍 dotnet-monitor...,使用 dotnet-monitor 分析.NET 应用程序 , 而最近, .NET 团队宣布第一个 release 版本的 dotnet-monitor, 同时它也是 .NET 6 的内容, 也就是...1632929066112 systemruntime_time_in_gc_ratio 0 1632929076110 systemruntime_time_in_gc_ratio 0 1632929076112 上面看到的是...因为我们的 dotnet-monitor 是在 sidecar 容器运行的, 所以需要共享 volume (用于 IPC 通信), 使用以下命令创建一个 volume docker volume create...Prometheus Prometheus 是一个免费的监控系统和时序数据库, 我们需要存储 dotnet-monitor 收集的 metrics 指标信息, 同样,我们可以通过各种方式运行/安装 Prometheus

    58810

    读书笔记 dotnet 的字符串在内存是如何存放

    本文是读伟民哥翻译的 .NET内存管理宝典 这本书的笔记,我认为读书的过程也需要实践,这样对一知半解的知识也有较为清晰的了解。...这里需要稍微说明的是 C++\CLI 是通过 C++ 编写的 .NET 应用程序,基于 .NET 运行时运行的程序 在 C++\CLI 项目里面添加一个叫 Foo 的类,在类里面添加一个方法,用来输出字符串的内容...原因是 .NET 世界随时都会有 GC 将对象的地址变更,因此为了进行安全使用,需要使用 pin_ptr 定住此对象,这样在 GC 时就不会修改此对象的内存地址。...当然了,在 C++\CLI 项目里面依然是不推荐使用 iostream 进行输出的 那以上的 PtrToStringChars 是通过什么魔法进行实现的?...,请阅读原文: https://blog.lindexi.com/post/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0-dotnet-%E7%9A%84%E5%AD

    71750

    dotnet 读 WPF 源代码笔记 默认的 Main 函数是在哪创建的

    在使用默认的 WPF 项目开发的时候,咱是不需要自己编写 Main 函数的,在 WPF 中的 Main 函数是存放在 App.g.cs 里面,看起来这个 Main 函数是生成的函数,本文将介绍在 WPF...框架中是如何创建这个入口函数 阅读本文你将了解 WPF 框架中,默认在 App.g.cs 生成入口 Main 函数的详细过程。...阅读本文之前,你需要了解一些编译过程的知识以及代码生成的知识 默认的 Application 继承类命名是 App.xaml 如果在你的项目中,依然使用默认的命名,那么在 .NET 5 的 SDK 下,...也就是 App.g.cs 文件里面存放入口函数就由此决定 在 src\Microsoft.DotNet.Wpf\src\PresentationBuildTasks\MS\Internal\MarkupCompiler...如果大家不熟悉代码创建的编写方式,就假装 WPF 是通过拼接字符串的形式创建的就可以 当前的 WPF 在 https://github.com/dotnet/wpf 完全开源,使用友好的 MIT 协议,

    70010

    dotnet 读 WPF 源代码笔记 WriteableBitmap 的渲染和更新是如何实现

    来告诉 WPF 层,当前需要更新的是 WriteableBitmap 的哪个内容。...SafeMILHandle 的 THIS_PTR 就是 CSwDoubleBufferedBitmap 类型,这个类型定义在 MIL 层,代码在 src\Microsoft.DotNet.Wpf\src...两个缓存,前面的缓存是用在实际显示的对象,后面的缓存是用的是一个数组用于给 WPF 上层使用访问 在 WPF 的渲染过程中,按照 DirectX 应用的渲染步骤,第一步就是收集过程,在收集过程中收集绘制信息...GetPossiblyFormatConvertedBackBuffer(&pIWGXBitmapSource); // 这里的 IFC 是一个宏,表示的是如果返回值是 gg 的,那么...关于 WPF 的从图片到渲染的步骤,就需要额外的文档来告诉大家 当前的 WPF 在 https://github.com/dotnet/wpf 完全开源,使用友好的 MIT 协议,意味着允许任何人任何组织和企业任意处置

    93420

    这可能是最low的发布dotnet core站点到centos7教程

    系统在这里下,我这里用的是最小化的安装镜像,里面有aliyun的,网易的,看在玩过阴阳师的份上,就163了,这个. 下下来是700多MB,有点xp的味道。...然后是 curl -sSL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?...linkid=848821 去下载core的安装包,回车,没有提示就是最好的提示。 ? 先在根目录下opt文件夹中心间dotnet文件夹,然后是把压缩包解压到这里面。...sudo ln -s /opt/dotnet/dotnet /usr/local/bin 给这个dotnet文件夹中的dotnet文件和 /usr/local/bin做关联。...dotnet restore, dotnet build,木有异常,就可以发布了。 ? dotnet publish。发布成功. ? cd 到发布的路径,然后ls看一下,好多发出来的新文件。。

    50730

    dotnet 5 的 bin 文件夹下的 ref 文件夹是做什么用的

    本文来和大家聊聊在 dotnet 5 和 dotnet 6 或更高版本的 dotnet 构建完成,在 bin 文件夹下,输出的 ref 文件夹。...在此文件夹里面,将会包含项目程序集同名的 dll 文件,但是此 dll 文件的大小却很小,那这个文件夹是用来做什么的 在使用 dotnet 5 或更高版本的 dotnet 的项目时,将会发现在项目的输出路径...例如公开的类型和公开的方法和属性等,而不包括实际的实现逻辑 在 dotnet 5 添加 ref 文件夹的一个用途是为了解决增量构建的问题,在很多大项目上,项目之间有很多引用,如果引用关系里面较底层的某个项目的代码被更改...,如果没有一个好的增量构建机,最差情况下,需要将被更改的项目的上层项目全部重新构建。...重新构建项目将让开发者进行摸鱼 在 dotnet 5 添加的 ref 文件夹将记录项目里的公开成员,大家都知道,如果公开的成员没有变更,那就是不需要重新构建引用项目,运行代码是兼容的,只是代码的行为变更

    94910

    Roslyn 获得 sln 文件所在的文件夹

    我找了很久没有发现 SolutionDir 这个定义,所以只能通过一个不通用的方法找到 在之前的项目可以使用 PreBuildEvent 的方式指定编译之前事件,新的项目格式也可以支持这个方法,只是支持不是很好...我就遇到在 Jenkins 无法编译通过,因为 PreBuildEvent 指定的 $(SolutionDir) 是空 在新的项目格式,找了很久都没有找到 $(SolutionDir) 的定义和找到运行的...sln 都在项目的最外,所以通过这个方法找到 sln 是可以的,只是不通用 如我有一个项目 lindexi 这个项目的文件夹请看下图 | Directory.Build.props | lindexi.sln...README.md | \---src lindexi.csproj 在 Directory.Build.props 添加下面代码 SolutionDir...>$(MSBuildThisFileDirectory)SolutionDir> 因为 $(MSBuildThisFileDirectory

    77720

    .NET Core CLI 的性能诊断工具介绍

    命令行接口 (CLI) 工具 dotnet-counters dotnet-counters 是一个性能监视工具,用于临时运行状况监视和初级性能调查, 你可以通过命令查看和存储,当前程序的运行时信息,...collect•dotnet-counters list•dotnet-counters monitor•dotnet-counters ps dotnet-counters ps 显示可监视的 dotnet...dotnet-counters monitor 这个命令可以实时监控程序的运行信息 //以 3 秒的刷新间隔监视 System.Runtime 运行时信息 dotnet-counters monitor...3 --format json dotnet-dump dotnet-dump是性能收集和分析实用工具,流程是先用 dotnet-dump collect 命令 收集当前程序的运行时信息,然后通过 dotnet-dump...dotnet-trace dotnet-trace 是一个跨平台的 .NET Core 工具,在不使用本机探查器的情况下启用正在运行的进程的 .NET Core 跟踪集合, 它是围绕 .NET Core

    92640

    SilverLight企业应用框架设计【四】实体层设计+为客户端动态生成服务代理(自己实现RiaService)

    也不知道如何是好。...…… 好吧,言归正传 说个前提条件: 此项目虽然使用了silverlight 4.0 但是服务端只能在dotNet3.5下运行 这也是我们为什么自己实现riaService的原因 实体层设计 由于有这个限制条件...Entity类的) 3: [Display(Name = "菜单名称")] 如上:Display特性在dotNet3.5中也是不存在的 同理,我们创建了DisplayAttribute特性,也是为了使用...命令行代码为 $(SolutionDir)RTMDemo.Compile\bin\Debug\RTMDemo.Compile.exe 其中 $(SolutionDir)为宏,指解决方案的目录(定义为驱动器...更多生成事件命令行的宏请参见这里:http://msdn.microsoft.com/zh-cn/library/42x5kfw4(v=vs.90).aspx 这个命令行的意思是 在编译完服务端类库后

    75030

    .NET Core CLI 的性能诊断工具介绍

    命令行接口 (CLI) 工具 dotnet-counters dotnet-counters 是一个性能监视工具,用于临时运行状况监视和初级性能调查, 你可以通过命令查看和存储,当前程序的运行时信息,...collect dotnet-counters list dotnet-counters monitor dotnet-counters ps dotnet-counters ps 显示可监视的...dotnet 进程的列表, 我本地显示有两个.Net Core的程序在运行,前面的数字是进程ID ?...dotnet-counters monitor 这个命令可以实时监控程序的运行信息 //以 3 秒的刷新间隔监视 System.Runtime 运行时信息 dotnet-counters monitor...3 --format json dotnet-dump dotnet-dump是性能收集和分析实用工具,流程是先用 dotnet-dump collect 命令 收集当前程序的运行时信息,然后通过

    1K31

    .NET Core CLI 的性能诊断工具介绍

    命令行接口 (CLI) 工具 dotnet-counters dotnet-counters 是一个性能监视工具,用于临时运行状况监视和初级性能调查, 你可以通过命令查看和存储,当前程序的运行时信息,...collect dotnet-counters list dotnet-counters monitor dotnet-counters ps dotnet-counters ps 显示可监视的 dotnet...进程的列表, 我本地显示有两个.Net Core的程序在运行,前面的数字是进程ID dotnet-counters list 这个命令我们可以看到程序的运行时信息,和Web主机运行信息 运行时:CPU...3 --format json dotnet-dump dotnet-dump是性能收集和分析实用工具,流程是先用 dotnet-dump collect 命令 收集当前程序的运行时信息,然后通过....dmp 输入 help 可以查看所有的命令,这里我想获取托管代码的堆栈信息,输入 clrstack dotnet-trace dotnet-trace 是一个跨平台的 .NET Core 工具,在不使用本机探查器的情况下启用正在运行的进程的

    1.6K20

    dotnet 读 WPF 源代码笔记 为什么默认的笔迹触摸点的压感是 0.5 的值

    本文是我在读 WPF 源代码做的笔记 在 WPF 中,如 WPF 触摸到事件 博客内容,在 WPF 中将会通过 StylusPointCollection 传入原始的触摸数据,也就是 int[] rawPacketData...struct StylusPoint { internal static readonly float DefaultPressure = 0.5f; } 这就是为什么触摸的默认压感是...0.5 的原因 而如果是是通过带压感的笔的触摸点,那么在 StylusPointDescription 描述里面,将会 ContainsTruePressure 属性表示当前触摸点是否存在压感,此时在创建完成触摸点之后...WPF 在 https://github.com/dotnet/wpf 完全开源,使用友好的 MIT 协议,意味着允许任何人任何组织和企业任意处置,包括使用,复制,修改,合并,发表,分发,再授权,或者销售.../post/dotnet-%E8%AF%BB-WPF-%E6%BA%90%E4%BB%A3%E7%A0%81%E7%AC%94%E8%AE%B0-%E4%B8%BA%E4%BB%80%E4%B9%88%

    40830
    领券