Open d3nd3 opened 6 months ago
Yes indeed -r:<asm_file>
has the same effect as //css_ref <asm_file>
. But this effect is located within the boundaries of the script engine. And script engine is only responsible for the script execution but not for intellisense for the C# (script) in the editor.
Intellisense is implemented by a completely different product cs-syntaxer
. Every CS-script plugin for and editor/ide (Notepad++, Sublime Text, VSCode) is a package containing a script engine, syntaxer and a little code to glue it all together and integrate with the host (editor).
Syntxer has no idea about what you are going to pass as CLI params when you execute the script thus it can only rely on C# code supplied to it. That's why it works with //css_ref *
. The same applies to default referenced assemblies in the CS-Script config file
. These are the features of script execution but not IDE integration.
Saying that, it's fair to ask if this extra info (CLI args, and config) can be supplied to the syntaxer by the "glue code". While it's theoretically possible, it is hard to implement reliably.
Only imagine this scenario. In the script file user specifies a custom config file //css_args -config:c:\my_custom_config.xml
. And this config has a default ref with your assembly.
You can perfectly execute this script as the script engine knows how to deal with all this convoluted logic. But The plugin code does not.
That's why in scenarios like yours I use this approach
Script file script.cs
//css_inc unity_development
<your business logic code>
Script with no business logic but dependencies only: unity_development.cs
//css_dir <some relevant dirs>
//css_nuget <unity package X>
//css_ref UnityEngine.dll
/css_inc my_favorite_unity_extensions.cs
Now every script for unity development will have only one extra line //css_inc unity_development
that defines ALL dependencies that you need.
You can even put unity_development.cs in the special global dir for that:
However, tbh I do not remember if syntaxer pics it or not. you will need to check it.
I you think about this, having all dependencies defined in the script makes more sense. In fact, the vast majority of the scripting systems do it this way (e.g. python imports).
Could this warning be related?
No, this warning is saying that on your system you cannot configure cs-script to use csc.exe
compiler engine as the right version of SDK (v7) is not present. So you can only use slower dotnet.exe
. BTW, you can update your cs-script to the latest (dotnet tool, choco, winget) and then the warning will be gone as the latest release integrates with .NET 8.
Howto get CS-Script
Note, every [release](https://github.com/oleg-shilo/cs-script/releases) comes with a detailed description of how to deploy/integrate CS-Script on/with your environment or application. This covers various package distribution solutions
.NET Tools
Chocolatey
WinGet
Debian package
NuGet package
On the main entry README on github it says that, but I can't see how its true? I can't find such resource anywhere.
I am trying to update the sublime cs-script version using some command as you mention, but not sure the specifics.
Edit: Ah I see it, Under deployment drop down in the releases! Ye, I'm a bit slow. Sorry.
And of course, you can search cs-script
in all these package/app managers.
And this is the summary:
choco install cs-script
winget install cs-script
dotnet tool install --global cs-script.cli
I recommend choco
. But any will do.
I expect that
-r:C:\somedll.dll
would do the same thing as `//css_ref C:\somedll.dllI am using this in sublime text editor. Only //css_ref works, but I dont' want to put that at the top of every file. I have tried:
dotnet cscs.dll -config:set:SearchDirs=add:
dotnet cscs.dll -config:set:DefaultArguments=add:-dir:
dotnet cscs.dll -config:set:DefaultArguments=add:-r:
Only //css_ref is making the Intellisense for that reference work! What am I doing wrong? And yes I confirmed those things with the CS-Script config output in sublime.
You can avoid referencing the most common assemblies in every script by setting them as default referenced assemblies in the CS-Script config file (ContextMenu > CS-Script > Settings > CS-Script Config).
Basically I can't do this. It doesn't work for me.OS: Windows 11
dotnet --version 8.0.205
"C:\Program Files (x86)\dotnet\sdk\7.0.409\Roslyn\bincore\csc.dll"
exists after installing .NET 7 SDK , yetCould this warning be related? It can't find the csc.dll , yet its there, hm.
Nevermind this is because cscs.exe is x64 and cscs.dll is x86. Yet my default dotnet.exe is x64.
"C:\Program Files (x86)\dotnet\dotnet.exe" cscs.dll
I replaced references of
dotnet
with the full path to the x86 dotnet within cs-script.py for the sublime package. I still can't get the behaviour I want.My goal is specifically for the UnityEngine.dll. From reading the docs I understand that on windows
using UnityEngine
with correct include dir should be enough.