Unity csc.rsp文件
作者:互联网
试验版本 Unity2020.3
编译符号,就是#if UNITY_ANDROID
这个东西,在处理多平台多分支的情况下挺有用的,但是在ProjectSettings里面设置比较麻烦,不主动代码调用保存的话就要关编辑器才保存,有的非技术同事那里有时莫名其妙就变了,然后编译报错。csc.rsp
这个东西一直有点印象但是了解不深,为了省点事还是要看下。
这个东西官方文档也是语焉不详的,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.
这里应该也是过时的文档,现在保存之后是会立即进行编译的。
最后,还有一个坑点:在rsp文件里面修改编译符号并保存,会重新编译,但是不会重新生成csproj文件,需要手动点击重新生成。
标签:文件,mcs,csc,编译,Unity,文档,rsp 来源: https://www.cnblogs.com/lunoctis/p/16592875.html