在写 Roslyn 的时候,经常需要辅助编译的工具,而这些工具需要传入一些参数,在项目很大的时候,会发现自己传入的参数比微软限制控制台可以传入的参数大很多,这时就无法传入了参数。 本文告诉大家如何使用 WriteLinesToFile 先把参数写入文件,通过文件的方式传输参数
我找了很久没有发现 SolutionDir 这个定义,所以只能通过一个不通用的方法找到 在之前的项目可以使用 PreBuildEvent 的方式指定编译之前事件,新的项目格式也可以支持这个方法,只是支持不是很好 我就遇到在 Jenkins 无法编译通过,因为 PreBuildEvent 指定的 $(SolutionDir)
是空 在新的项目格式,找了很久都没有找到 $(SolutionDir)
的定义和找到运行的 sln 文件的定义的方法 于是通过 Directory.Build.props 的方法找到 sln 文件 在 sln 文件所在的文件夹添加 Directory.Build.props 文件,因为很多项目的 sln 都在项目的最外,所以通过这个方法找到 sln 是可以的,只是不通用 如我有一个项目 lindexi 这个项目的文件夹请看下图
| Directory.Build.props
| lindexi.sln
| README.md
|
\---src
lindexi.csproj
在 Directory.Build.props 添加下面代码
<Project>
<PropertyGroup>
<SolutionDir>$(MSBuildThisFileDirectory)</SolutionDir>
</PropertyGroup>
</Project>
因为 $(MSBuildThisFileDirectory)
就是当前的文件的文件夹,这个文件和 sln 文件刚好在相同的文件夹,所以通过这个方法就可以获得 sln 所在的文件夹 项目文件中的已知属性(知道了这些,就不会随便在 csproj 中写死常量啦) - walterlv MSBuild Well-known Item Metadata MSBuild Reserved and Well-known Properties 更多请看 手把手教你写 Roslyn 修改编译
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。
本文告诉大家如何在 MSBuild 里使用 Copy 复制文件
本文告诉大家如何编写在编译过程修改打包文件
本文告诉大家如何做源代码包,源代码包的意思是安装的包不是安装dll的方式,而是使用源代码的方式。也就是最后是编译包的源代码而不是添加dll,这个方式是解决想要把项目分小,功能分细,但是不希望项目有很多的 dll,因为如果项目有很多 dll 会让软件打开的时间比较长
本文告诉大家经常使用的 NameSyntax 拿到值的 ToString 和 ToFullString 方法的区别
As you know, the WriteLinesToFile will separate the item by semicolons. How can we use WriteLinesToFile to write the semicolons to file?
虽然已经通过很多篇博客告诉大家如何通过 Directory.Build.props 文件修改编译的方法,但是本文还是提供一个新的思路 只需要在项目文件夹,或者磁盘的文件夹,如 E:\
放下本文提供的 Directory.Build.props 文件,整个文件夹内的控制台项目就会输出 林德熙是逗比 想要知道是怎么做的,请看下面
在一些大项目需要很多独立的仓库来做,每个仓库之间都会有很多相同的配置,本文告诉大家如何通过 Directory.Build.props 管理多个项目配置
本文告诉大家 Directory.Build.props 是什么有什么优点?如何使用 Directory.Build.props 文件定义编译
在带界面的 dotnet core 程序运行的时候就会出现一个控制台窗口,本文告诉大家使用最简单方法去隐藏控制台窗口。
本文告诉大家如果在 Nuget 引用源代码的方式引用源代码,在 VisualStudio 的智能提示和 Resharper 的智能提示都能找到对应的类,但是在 VisualStudio 编译或使用命令行 msbuild 编译时提示找不到类
本文来告诉大家如何用 Roslyn 管理配置,在开一个新的项目的时候经常需要添加公司,版权等,但是这些信息不想每次都添加于是我就想用 Nuget 管理所有配置,安装一个 nuget 就自动配置
在使用新的项目格式,可以使用 Target 添加项目,但是有一些项目需要在合适的时候添加,如果添加早了,那么会让用户看到这些文件,如果添加的时间是在引用编译之后,那么文件将无法进行编译。
在日常的开发中,如果需要发布多个库,多个库之间的版权和作者等信息都是相同的。如果需要每次更改信息都打开项目进行编辑,这个效率是很低的。本文提供一个方式,通过安装一个 nuget 包就可以自动填写信息。
本文告诉大家如何使用 Target 进行修改编译时的文件
本文告诉大家如何使用 Roslyn 分析代码。
本文告诉大家在使用 Roslyn 分析代码时,使用的 Span 和 FullSpan 有什么区别
本文告诉大家如何在项目文件通过不同的条件使用不同的方法运行