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

一文搞定SonarQube接入C#(.NET)代码质量分析

Sonar检测C#代码需要预先编译,而且C#代码必须用MSbuid进行编译,如果需要使用SonarQube对C#进行代码质量分析,则需要下载Sonar-Scanner-MSBuildMSBuild,...Sonar+命令行分析C#代码 1、打开CMD,切换到指定的项目根目录,必须和.sln或者.csproj同级目录。...参数说明: /key(简写k):对应projectKey即项目的唯一代码,如两套源代码使用同一个projectKey那扫描的结果将混在一起,所以一个项目需要有一个单独的projectKey /name...0个错误,则代表MSBuild编译成功,编译成功后,在当前目录下会生成一个obj目录。...(编译成功后默认生成Debug产物),SonarQube分析C#项目工程,前提需要MSBuild能预编译成功,如果存在错误,则无法成功完成后续Sonar分析动作。

4.9K31
您找到你想要的搜索结果了吗?
是的
没有找到

快速将旧版 .NET Framework 的 WPF Windows Forms 项目格式(csproj) 迁移成新版 SDK 风格的项目格式

现在再使用 Visual Studio 创建新的 WPF 项目,将默认引诱你使用 .NET 6(或者 5、.NET Core 3.1)框架和配套的新的 SDK 风格的项目文件(csproj)。...但如果你手头有一个旧的 WPF 项目,要怎么才能使用到新项目格式带来的各种好处呢?本问将带你快速完成迁移,一路删删删。...准备工作 为了方便讲述操作,我这里先着手准备一份旧格式的 WPF 项目。在创建项目选“WPF 应用(.NET Framework)”就会使用旧的格式。...Studio 2017 upgrade guide Using the new .Csproj without .Net core · Issue #1688 · Microsoft/msbuild c.../project-system XAML files are not supported · Issue #810 · dotnet/sdk c# - How-to migrate Wpf projects

37810

绕过WAF和多个防护软件提权案例

0x01 前言 这篇文章记录的是朋友在某次项目测试中遇到的一个因存在WAF和多个防护软件而无法提权的问题,这次绕防护提权的过程中也是踩了不少的坑,记录分享下。...0x04 注意事项 如果提权过程中需要迁移进程,但是没有可用的迁移进程,这时可以尝试用execute -Hc -f命令去执行vbc.exe和SQLPS.exe等程序得到一个可迁移进程。‍...经过测试后发现这个WAF好像是根据Webshell声明的文件头来进行拦截的,只要带有Page Language="C#"就会被拦,不知道这是啥WAF,居然没有拦截特征。...大马/冰蝎/哥斯拉aspx: 中国菜刀aspx: 哥斯拉asmx: 坑点二: 当时朋友告诉我他有试过cobaltstrike派生会话到MSF去提权,但是派生不了,他以为是被防护拦截了,所以我也没有再去测试这个

1.4K30

编写你的专属 MSBuild C# 代码生成器:在保存文件自动实时生成你的代码

一天,头像全白昵称空格的“wuweilai”童鞋问我为什么 GRPC 的 NuGet 包能自动在 .proto 文件保存更新生成的代码,怎么才能做到像它那样。...但如果希望完整了解基于 MSBuild 生成代码的原理,你可以需要了解以下知识或教程: 理解 C# 项目 csproj 文件格式的本质和编译流程 如何创建一个基于命令行工具的跨平台的 NuGet 工具包...如何创建一个基于 MSBuild Task 的跨平台的 NuGet 工具包 准备项目 我们创建一个全新的项目,用来了解如何实时生成代码。...最简单的自动生成代码的逻辑 现在,我们打开项目 csproj 文件(双击项目名称即可打开编辑这个文件): 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19...对于已知的项(Item)来说,Generator 属性是 MSBuild 编译一个已知元数据(Metadata),其作用为当此文件改变,会执行一个指定的 Target 我们将其指定为 MSBuild

33910

如何编写基于 Microsoft.NET.Sdk 的跨平台的 MSBuild Target(附各种自带的 Task)

更新于 2018-07-11 02:44 我之前写过一篇 理解 C# 项目 csproj 文件格式的本质和编译流程,其中,Target 节点就是负责编译流程的最关键的节点...在 理解 C# 项目 csproj 文件格式的本质和编译流程 中我们提到 ItemGroup 的节点,其作用由 Target 指定。... 里的 和 是静态的状态,如果使用 Visual Studio 打开项目,那么所有的状态将会直接在 Visual Studio...MSBuild Task 的跨平台的 NuGet 工具包 中利用这个进行调试) Warning 显示一个警告信息 Error 报错(这样,编译就会以错误结束) CombinePath, ConvertToAbsolutePath...拼接路径,转成绝对路径 CreateItem, CreateProperty 创建项或者属性 Csc 调用 csc.exe 编译 Csc Task MSBuild 编译一个项目 MSBuild Task

84010

理解 C# 项目 csproj 文件格式的本质和编译流程

2018-08-12 08:11 写了这么多个 C# 项目,是否对项目文件 csproj 有一些了解呢?...常规的 C# 编译 None 没啥特别的编译选项,就为了执行一些通用的操作(或者是只是为了在 Visual Studio 列表中能够有一个显示) Folder 一个空的文件夹,也没啥用(不过标了这个文件夹...当我使用 msbuild 编译,我的地址:C:\Program Files\dotnet\sdk\2.1.300\Sdks\Microsoft.NET.Sdk\build\。...不过,它们在处理我们的项目文件的行为大多是一致的——至少对于通常项目来说如此。 我们前一部分介绍每个部件的时候,已经简单说了其组织方式,这里我们进行一个回顾和总结。...当 Visual Studio 打开项目,它会解析里面所有的 Import 节点,确认应该引入的 .props 和 .targets 文件都引入了。

2.6K10

VS插件推荐--SonarLint:获得高质量和安全代码的第一道防线

SonarLint:您获得高质量和安全代码的第一道防线SonarLint 可帮助您检测和修复 IDE 中的错误、代码异味和安全漏洞。它支持 C#、VB.NET、C、C++、JS 和 TS。...什么是SonarLintSonarLint 是一个免费的开源 IDE 扩展,可在编码识别并帮助您修复代码质量和代码安全问题。...,告诉您它们为什么有害,以及如何修复它们SonarLint 为 Visual Studio 开发人员提供了一个全面的 in-IDE 解决方案,用于提高他们交付的代码的质量和安全性。...对 MSBuild (.vcxproj) 项目的应用程序、动态库和静态库类型的 C 和 C++ 支持 使用模式匹配和数据流分析的深度代码分析算法 数百种特定于语言的静态代码分析规则,并且还在不断增长 包含详细示例的上下文帮助和修正指南...突出显示代码中的问题,告诉您它们为什么有害,以及如何修复它们 SonarLint 为 Visual Studio 开发人员提供了一个全面的 in-IDE 解决方案,用于提高他们交付的代码的质量和安全性

86660

vs2015编写c#项目下各文件解析 vs项目结构解析vs项目结构解析

随笔 - 18 文章 - 43 评论 - 0 vs项目结构解析 vs项目结构解析 当我们用VS开发一个项目的时候,首先应该清楚用VS这个IDE生成的一些文件和文件夹是什么意思,起什么作用,什么场合下使用...它储存了用户界面的自定义配置,包括布局、断点和项目最后编译的而又没有关掉的文件(下次打开用)等,以便于下一次你打开Visual Studio可以恢复这些设置,因此不要随便删除,所以不要管它们。...下次打开解决方案,Visual Studio会重建它。...创建 Windows 窗体项目,默认情况下,C# 会将一个窗体添加到项目中,并为其命名为 Form1。表示该窗体的两个文件称为 Form1.cs 和 Form1.Designer.cs。...项目模板才会自动生成,与C#无关...

2.9K52

如何创建一个基于 MSBuild Task 的跨平台的 NuGet 工具包

更新于 2018-09-01 00:07 MSBuild 的 Task 为我们扩展项目的编译过程提供了强大的扩展性,它使得我们可以用 C# 语言编写扩展;利用这种扩展性,我们可以为我们的项目定制一部分的编译细节...:创建一个项目,用来写工具的核心逻辑 为了方便制作跨平台的 NuGet 工具,新建项目我们优先选用 .NET Core Library 项目或 .NET Standard Library 项目。...进行特殊处理,而将处理权全部交给我们。...提示:一旦调试环境搭建好,你可能会遇到编译 Walterlv.NuGetTool 项目,发现 dll 被占用的情况,这时,打开任务管理器结束掉 msbuild.exe 进行即可。...如果在阅读这篇文章存在一些概念理解上的问题,或者不知道如何扩展本文的功能,可能需要阅读下我的另一些文章: 理解 C# 项目 csproj 文件格式的本质和编译流程 - 吕毅 项目文件中的已知属性(知道了这些

1.4K10

Lazarus APT攻击手法之利用Build Events特性执行代码复现

因此,只要构建成功,该事件甚至将针对最新的项目运行。 当构建更新项目输出 仅当编译器的输出文件(.exe或.dll)不同于先前的编译器输出文件,才会运行构建后事件。...在Lazarus组织中是利用Visual Studio进行利用的,那么我们来复现一下利用手法: 1.打开Visual Studio 2.新建一个项目 3.进入项目的属性 就可以看到了,正如上面看到的具有...我们也可以在项目文件中直接添加我们需要执行的命令 打开项目目录可以看到 ? 其中以.vcxproj结尾的文件就是我们需要利用的文件。...这里再分享一个手法吧 我看到网上的分析文章都是说PreBuildEvent,PreLinkEvent,PostBuildEvent这三个利用点,都是其实还有一个的地方可以给我们利用 我们可以回看到.vcxproj...借助于一个恶意的构建的过程,我们可以获得受害者计算机的反向shell。接下来,我们要生成file.csproj文件,为此,首先需要通过msfvenom生成一个基于C#的shellcode。

1.2K10

每次都要重新编译?太慢!让跨平台的 MSBuilddotnet build 的 Target 支持差量编译

不然——当你的项目大起来的时候,就会感受到每次都重新编译,每次重复调试的过程都要进行漫长等待的绝望和无奈。 如果你正遭遇差量编译失效,每次都要重新编译的问题,那么阅读本文应该能够帮助你解决问题。...如果你觉得上面的写法非常陌生,或者说不清楚那个 Target 节点的作用,建议先阅读: 理解 C# 项目 csproj 文件格式的本质和编译流程 - 吕毅 如何创建一个基于 MSBuild Task 的跨平台的...当两者都没有指定时,MSBuild 会认定为此 Target 在每次编译都会执行 当两者都指定时,MSBuild 会认定为此 Target 需要进行差量执行 不能只指定其中的一个而不指定另一个MSBuild...Inputs 和 Outputs 的格式都是一组用 ; 分隔的字符串,每一项都是一个文件的路径。不过不用特别考虑如何使用 ; 拼接,因为当我们使用 @ 符号,收集到的每一项便是使用 ; 分隔的。...如果不清楚 和 的作用,建议建议先阅读理解 C# 项目 csproj 文件格式的本质和编译流程 - 吕毅。

1.2K10

MSBuild的简单介绍与使用

其中最核心的就是执行引擎,它包括定义构造工程的规范,解释构造工程,执行“构造动作”;构造工程是用来描述构造任务的,大多数情况下我们使用MSBuild就是遵循规范,编写一个构造工程;MSBuild引擎执行的每一个...构造工程(脚本文件) 先说说构造工程,只要通过Notepad打开任何一个Visual Studio下的C#工程(csproj)文件,就知道构造工程到底是怎么回事了。 <?...这里还需要强调一点的是,项目级元素(Property)可以在元素下定义,也可以在构造过程中作为外部参数传入,这是一个非常有用的特性,一般编译选择配置项(Debug或者Release)就是利用这个特性实现的...Project元素 这是每一个项目文件的最外层元素,它表示了一个项目的范围。如果缺少了这一元素,MSBuild会报错称Target元素无法识别或不被支持。...Task元素 这可能是整个项目文件中最重要的,因为它才是真正可执行的部分(这也是为什么我在上面说Target是虚拟的)。你可以在Target下面放置多个Task来顺序地执行相应的任务。

1.2K50

.Net Micro Framework移植基础(包编译通过)

(上面脚本中可以看到调用msbuild命令) 2,前面我们修改的Microsoft.SPOT.System.MDK.targets就是MSBuild格式,有兴趣的可以自己慢慢看; 3,每一个MF方案就是一个项目...proj,它引入其它更多的项目; 4,编译一个方案,它会根据先后顺序和引用关系先编译其它项目,这跟C#项目引用一起编译有点类似。...C++项目之间的引用是通过引用头文件来实现的,不同于C#项目只需要引用项目或者程序集即可,所以,目录结构非常重要。...7,MSBuild会为每一个项目源代码创建一个进程,这很浪费时间(频繁创建进程),但是很保险,相互间不干扰; 五、纠错 出错在所难免,但是MSBuild是针对每个项目逐个编译的,尽管某个项目编译出错,...编译完成以后我们就可以用文本编辑器打开,搜索关键字“error”,一般那里就有详细的错误信息啦! 当然,具体的代码错误只能靠各人的功力了!我们欢迎交流各种常见的非代码错误

735100

.NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖

PackageReference: 1 2 3 我现在有一个项目...(注意到项目文件中我有额外引用一个其他的 NuGet 包 Ben.Demystifier,这是为了演示将依赖进行合并而添加的 NuGet 包,具体是什么都没有关系,我们只是在演示依赖的合并。)...如果你希望在你的项目当中进行尝试,可以把所有 /log 参数之后的那些程序集名称改为你自己的名称。 那么在编译的时候使用命令 msbuild /t:ILMerge 就可以完成程序集的合并了。...需要注意 如果使用新的基于 Sdk 的项目文件,那么默认生成的 PDB 是 Portable PDB,但是 ILMerge 暂时不支持 Portable PDB,会在编译提示错误: 1 2 3 4 5...Array dimensions exceeded supported range.

1.6K30

Visual Studio 2017 以前的旧格式的 csproj Import 进来的 targets 文件有时不能正确计算属性(PropertyGroup)和集合(ItemGroup)

---- 本文的前置知识 你可能需要了解 csproj 文件的格式和编译过程,才可能读懂本文,所以需要先阅读: 理解 C# 项目 csproj 文件格式的本质和编译流程 问题 下面的代码来自 SourceFusion...这是一个 .targets 文件,项目安装此 NuGet 包之后就会自动 Import 这个 targets 文件。...原因 究其原因,这是 MSBuild项目文件(csproj)的解析和 Visual Studio 对项目文件的解析是不同的。...在 Target 内部的属性和集合将在编译期间进行计算,而不是在 Visual Studio 打开的时候就计算好。于是我们每次编译的时候都可以获得最新的属性和集合的值。...衍生知识 旧格式的 csproj 是不会自动计算属性和集合的变更的,这也是为什么项目文件改变的时候,Visual Studio 需要重新加载项目才可以正常显示和编译项目

18230

.NET 环境变量

4 - 写入所有跟踪信息 3 - 仅写入信息、警告和错误消息 2 - 仅写入警告和错误消息 1 - 只写入错误信息 以获取有关应用程序启动详细的跟踪信息的典型方法是设置COREHOST_TRACE=1和...host_trace.txt将在当前目录中创建一个包含详细信息的新文件。...默认情况下,MSBuild 将在进程内执行。要强制的MSBuild使用外部工作节点长寿的过程建设项目,设置DOTNET_CLI_USE_MSBUILDNOINPROCNODE到1,true或yes。...一个关键用例是测试 SDK 任务和目标,而无需使用 .NET Core SDK 部署它们。 DOTNET_MSBUILD_SDK_RESOLVER_SDKS_DIR:覆盖 .NET SDK 目录。...DOTNET_NEW_PREFERRED_LANG 省略开关dotnet new配置命令的默认编程语言-lang|--language。默认值为C#。有效值C#,F#或VB。

2.2K40

项目文件 MSBuild NuGet 包中编写扩展编译的时候,正确使用 props 文件和 targets 文件

如果你不了解 .props 文件或者 .targets 文件,可以阅读下面的博客: 理解 C# 项目 csproj 文件格式的本质和编译流程 - walterlv 具体的例子有下面这些博客。...从零开始制作 NuGet 源代码包(全面支持 .NET Core / .NET Framework / WPF 项目) - walterlv 如何创建一个基于 MSBuild Task 的跨平台的 NuGet...工具包 - walterlv 如何创建一个基于命令行工具的跨平台的 NuGet 工具包 - walterlv 当我们创建的 NuGet 包中包含 .props 和 .targets 文件的时候,我们相当于在项目文件...-- 当生成 WPF 临时项目,不会自动 Import NuGet 中的 props 和 targets 文件,这使得在临时项目中你现在看到的整个文件都不会参与编译。...所以我们通过一个属性开关 `ShouldFixNuGetImportingBugForWpfProjects` 来决定是否修复这个错误

22820
领券