试验版本 Unity2020.3

编译符号,就是#if UNITY_ANDROID这个东西,在处理多平台多分支的情况下挺有用的,但是在ProjectSettings里面设置比较麻烦,不主动代码调用保存的话就要关编辑器才保存,有的非技术同事那里有时莫名其妙就变了,然后编译报错。csc.rsp这个东西一直有点印象但是了解不深,为了省点事还是要看下。

Unity2020.2文档

Unity2020.3文档

这个东西官方文档也是语焉不详的,2020.2文档里面有的,2020.3文档就没了。不同的Unity版本也对应不同的文件。

大概是 Unity5 smcs.rsp(runtime) & gmcs.rsp(editor) -> Unity2017 mcs.rsp -> Unity2020 csc.rsp

2021.1文档里面又有了, 2021.2文档里面又没了, 估计这里的文档没人维护...

mcs.rsp这个文件实际已经过时了,C#的API兼容性等级不论是.NET Standard 2.0还是.NET 4.x,使用的都是csc.rsp文件

但是有一个比较坑的点,官方文档的说明:

As an example, if you include the single line -define:UNITY_DEBUG in your mcs.rsp file, the #define directive UNITY_DEBUG exists as a global #define for C# scripts, except for Editor scripts.

文档里面说,在mcs.rsp里面设置编译符号,对编辑器代码是无效的,那么实际有没有效果?

现在已经用Assets/csc.rsp了,修改rsp文件后,能看到重新编译dll了,查看Temp文件夹下的编译器参数也是有rsp文件的内容的,应该是有效果的

可以用更直观的可视化方法测试下

csc.rsp文件内容

-define:TEST_RSP

编辑器代码内容

[MenuItem("测试/rsp文件")]
public static void TestRsp()
{
#if TEST_RSP
EditorUtility.DisplayDialog("", "有效", "确定");
#else
EditorUtility.DisplayDialog("", "无效", "确定");
#endif
}

应该是可以看到有效的

Every time you make changes to .rsp files, you need to recompile in order for them to be effective. You can do this by updating or reimporting a single script (.js or .cs) file.

这里应该也是过时的文档,现在保存之后是会立即进行编译的。(需要unity窗口失去焦点才会编译)

如果代码直接通过File.WriteAllText()等非Unity的API来写rsp文件,需要调用AssetDatabase.RefreshAll()来立即执行编译。但是这样的话,csproj文件又需要收到点生成。

如果调用Unity.CodeEditor.CodeEditor.CurrentEditor.SyncAll(); 就可以执行编译,生成csproj文件一条龙服务

Unity csc.rsp文件的更多相关文章

  1. Windows 10中的CSC.exe、CSC.rsp

    (1)CSC.exe位置 [4.0的位于] C:\Windows\Microsoft.NET\Framework\v4.0.30319 [之后版本的位于] C:\Program Files (x86) ...

  2. Unity中的文件

    Unity中的文件大致分为一下几类: 1.资源文件: 导入后,除非是修改,否则不会变化的文件.例如:fbx文件.贴图文件.音频文件.视频文件.动画文件等. 这些文件在导入到Unity的时候,都会进行转 ...

  3. Unity 播放音频文件

    Unity 播放音频文件参考代码: public void Play(string strSoundName, float autoDestroyTime = 0f, bool bLoop = fal ...

  4. Oracle 静默安装的db_install.rsp 文件

    Oracle 静默安装的db_install.rsp 文件,已修改好值 ################################################################ ...

  5. unity中的文件存储路径与各平台(Android,iOS)的关系

    原文链接:unity中的文件存储路径与各平台(Android,iOS)的关系 主要是这个问题困扰我了一阵子,所以特写写... unity中的的各种存储方法的对应关系(直接上截图吧) 重点说的是Appl ...

  6. csc.rsp Nuget MVC/WebAPI、SignalR、Rx、Json、EntityFramework、OAuth、Spatial

    # This file contains command-line options that the C# # command line compiler (CSC) will process as ...

  7. 给自己的Unity添加声音文件

    下面说明一下,在Unity 里是怎么样加载声音文件的. Unity同时支持单声道和立体声音频资产. Unity支持导入以下音频文件格式:.aif, .wav, .mp3, 和 .ogg,和以下音轨模块 ...

  8. Unity打包同一文件Hash不一样

    问题起因 游戏开发基本都会涉及到资源版本管理及更新,本文记录我在打包过程中遇到的一小问题: 开过中常用于标记资源版本的方法有计算文件Hash.VCS的版本等. 在Unity中对同一个资源文件进行多次打 ...

  9. Unity 从StreamingAssets文件夹和PersistentData文件夹 保存读取AssetBundle资源

    项目中的资源一般我们打包成AssetBundle格式 方便我们加载和热更 而AssetBundle文件 一般保存在StreamingAssets文件夹或则PersistentData文件夹 首先我们看 ...

  10. 修改Unity中Lua文件的默认打开程序

    项目中引用了XLua,而Lua文件又是以txt文件结尾的,当修改系统的扩展脚本编辑器为vs后双击lua文件(xx.txt)默认也使用vs打开了,无提示的黑白文本编辑 昨办? -. 后来看到网上有写Un ...

随机推荐

  1. Mysql基础7-约束

    一.约束的基本概念 1.概念:约束是作用于表中字段上的规则,用于限制储存在表中的数据 2.目的:保证数据库中的数据的正确性,有效性和完整性 3.分类 非空约束(not null):限制该字段的数据不能 ...

  2. 【MAUI Blazor踩坑日记】2.关于Windows上的相机问题

    前言 本系列文章,默认你已经踏上了MAUI Blazor的贼船,并且对MAUI Blazor有了一些了解,知道MAUI是什么,知道Blazor是什么. 不会教你怎么写MAUI Blazor的项目,只是 ...

  3. python中的注释noqa: F401

    在Python中,"noqa: F401" 是一个特殊的注释指示.它主要用于在静态代码检查工具(例如Flake8)运行时,告知工具忽略特定的 "F401" 错误 ...

  4. GitOps 与 DevOps:了解关键差异,为企业做出最佳选择

    在软件开发领域,GitOps 和 DevOps 是加强协作和实现软件交付流程自动化的重要技术.虽然这两种模式都旨在提高软件开发生命周期的效率,但它们的核心原则和实施方式却各不相同. 本篇文章将帮助您了 ...

  5. .NET周刊【8月第2期 2023-08-14】

    本周由于Myuki大佬感染新冠,国际板块暂停更新一周,将在下周补齐,所以本周只有国内板块. 国内文章 解决 Blazor 中因标签换行导致的行内元素空隙问题 https://www.cnblogs.c ...

  6. Midjourney的一些学习心得:如何高效的图生图

    注意本文没有什么长篇大论,全部是自己的学习心得. 心得体会:如何图生图 今天在一篇midjourney看到好图应该怎么抄. 相信经常会看到好图也想要的,但是要么抄不出感觉,要么抄过来把水印也抄了,这一 ...

  7. 响应式编程——初识 Flux 和 Mono

    by emanjusaka from ​ https://www.emanjusaka.top/archives/4 彼岸花开可奈何 本文欢迎分享与聚合,全文转载请留下原文地址. 前言 Reactor ...

  8. Spring中事务的传播行为有哪些?

    Spring中事务的传播行为有哪些? 现在我们来谈一个场景,再来引出事务传播行为这个概念.现在有methodA( ) 和 methodB( ),而且两个方法都显示的开启了事务,那么methodB( ) ...

  9. .NET C#基础(9):资源释放 - 需要介入的资源管理

    1. 什么是IDisposable?   IDisposable接口是一个用于约定可进行释放资源操作的接口,一个类实现该接口则意味着可以使用接口约定的方法Dispose来释放资源.其定义如下: pub ...

  10. KRPANO开发拍摄拼图视频常用软件分享

    KRPano开发拍摄拼图视频常用软件分享,包含了KRPano开发,拼图,视频等软件. 包括如下软件: 全景照片拼接,全景照片查看,全景视频拼接,全景视频查看,全景视频插件,全景漫游制作,KRPano资 ...