diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f803924c..1072bdeb 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -12,9 +12,8 @@ jobs: uses: actions/setup-dotnet@v3 with: dotnet-version: | - 6.0.x - 7.0.x 8.0.x + 9.0.x include-prerelease: true - name: Install dotnet-script run: dotnet tool install dotnet-script --global @@ -23,7 +22,7 @@ jobs: run: dotnet-script build/Build.csx build-mac: - runs-on: macos-latest + runs-on: macos-13 steps: - uses: actions/checkout@v3 @@ -31,9 +30,8 @@ jobs: uses: actions/setup-dotnet@v3 with: dotnet-version: | - 6.0.x - 7.0.x 8.0.x + 9.0.x include-prerelease: true - name: Install dotnet-script run: dotnet tool install dotnet-script --global @@ -50,9 +48,8 @@ jobs: uses: actions/setup-dotnet@v3 with: dotnet-version: | - 6.0.x - 7.0.x 8.0.x + 9.0.x include-prerelease: true - name: Install dotnet-script run: dotnet tool install dotnet-script --global diff --git a/.gitignore b/.gitignore index 860e9507..62f574c6 100644 --- a/.gitignore +++ b/.gitignore @@ -266,3 +266,4 @@ project.json /dotnet-script /.vscode /src/Dotnet.Script/Properties/launchSettings.json +.DS_Store diff --git a/README.md b/README.md index f67e8cc7..3482c176 100644 --- a/README.md +++ b/README.md @@ -8,19 +8,22 @@ Run C# scripts from the .NET CLI, define NuGet packages inline and edit/debug th ## NuGet Packages -| Name | Version | Framework(s) | -| ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------- | -| `dotnet-script` (global tool) | [![Nuget](http://img.shields.io/nuget/v/dotnet-script.svg?maxAge=10800)](https://www.nuget.org/packages/dotnet-script/) | `net6.0`, `net7.0` | -| `Dotnet.Script` (CLI as Nuget) | [![Nuget](http://img.shields.io/nuget/v/dotnet.script.svg?maxAge=10800)](https://www.nuget.org/packages/dotnet.script/) | `net6.0`, `net7.0` | -| `Dotnet.Script.Core` | [![Nuget](http://img.shields.io/nuget/v/Dotnet.Script.Core.svg?maxAge=10800)](https://www.nuget.org/packages/Dotnet.Script.Core/) | `net6.0` , `netstandard2.0` | -| `Dotnet.Script.DependencyModel` | [![Nuget](http://img.shields.io/nuget/v/Dotnet.Script.DependencyModel.svg?maxAge=10800)](https://www.nuget.org/packages/Dotnet.Script.DependencyModel/) | `netstandard2.0` | -| `Dotnet.Script.DependencyModel.Nuget` | [![Nuget](http://img.shields.io/nuget/v/Dotnet.Script.DependencyModel.Nuget.svg?maxAge=10800)](https://www.nuget.org/packages/Dotnet.Script.DependencyModel.Nuget/) | `netstandard2.0` | +| Name | Version | Framework(s) | +| ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------- | +| `dotnet-script` (global tool) | [![Nuget](http://img.shields.io/nuget/v/dotnet-script.svg?maxAge=10800)](https://www.nuget.org/packages/dotnet-script/) | `net8.0`,`net9.0` | +| `Dotnet.Script` (CLI as Nuget) | [![Nuget](http://img.shields.io/nuget/v/dotnet.script.svg?maxAge=10800)](https://www.nuget.org/packages/dotnet.script/) | `net8.0`,`net9.0` | +| `Dotnet.Script.Core` | [![Nuget](http://img.shields.io/nuget/v/Dotnet.Script.Core.svg?maxAge=10800)](https://www.nuget.org/packages/Dotnet.Script.Core/) | `net8.0`,`net9.0`,`netstandard2.0` | +| `Dotnet.Script.DependencyModel` | [![Nuget](http://img.shields.io/nuget/v/Dotnet.Script.DependencyModel.svg?maxAge=10800)](https://www.nuget.org/packages/Dotnet.Script.DependencyModel/) | `netstandard2.0` | +| `Dotnet.Script.DependencyModel.Nuget` | [![Nuget](http://img.shields.io/nuget/v/Dotnet.Script.DependencyModel.Nuget.svg?maxAge=10800)](https://www.nuget.org/packages/Dotnet.Script.DependencyModel.Nuget/) | `netstandard2.0` | ## Installing ### Prerequisites -The only thing we need to install is [.Net 6.0 or .Net 7.0](https://www.microsoft.com/net/download/core). +The only thing we need to install is [.NET 8.0 or .NET 9.0 SDK](https://dotnet.microsoft.com/en-us/download/dotnet). + +[Note](https://learn.microsoft.com/en-us/dotnet/core/install/linux-scripted-manual#manual-install): +> If you install the .NET SDK to a non-default location, you need to set the environment variable `DOTNET_ROOT` to the directory that contains the dotnet executable ### .NET Core Global Tool diff --git a/build/Build.csx b/build/Build.csx index 684f6602..3aa8a709 100644 --- a/build/Build.csx +++ b/build/Build.csx @@ -1,4 +1,4 @@ -#load "nuget:Dotnet.Build, 0.7.1" +#load "nuget:Dotnet.Build, 0.23.0" #load "nuget:dotnet-steps, 0.0.1" #load "nuget:github-changelog, 0.1.5" #load "BuildContext.csx" @@ -33,7 +33,7 @@ await StepRunner.Execute(Args); private void CreateGitHubReleaseAsset() { - DotNet.Publish(dotnetScriptProjectFolder, publishArtifactsFolder, "net6.0"); + DotNet.Publish(dotnetScriptProjectFolder, publishArtifactsFolder, "net8.0"); Zip(publishArchiveFolder, pathToGitHubReleaseAsset); } @@ -58,7 +58,8 @@ private void CreateNuGetPackages() private void RunTests() { - DotNet.Test(testProjectFolder); + Command.Execute("dotnet", "test -c Release -f net8.0", testProjectFolder); + Command.Execute("dotnet", "test -c Release -f net9.0", testProjectFolder); if (BuildEnvironment.IsWindows) { DotNet.Test(testDesktopProjectFolder); @@ -86,7 +87,8 @@ private async Task PublishRelease() Git.Default.RequireCleanWorkingTree(); await ReleaseManagerFor(owner, projectName, BuildEnvironment.GitHubAccessToken) .CreateRelease(Git.Default.GetLatestTag(), pathToReleaseNotes, new[] { new ZipReleaseAsset(pathToGitHubReleaseAsset) }); - NuGet.TryPush(nuGetArtifactsFolder); + + DotNet.TryPush(nuGetArtifactsFolder); } } diff --git a/build/BuildContext.csx b/build/BuildContext.csx index 6cf4505b..1cfeeb07 100644 --- a/build/BuildContext.csx +++ b/build/BuildContext.csx @@ -1,4 +1,4 @@ -#load "nuget:Dotnet.Build, 0.7.1" +#load "nuget:Dotnet.Build, 0.23.0" using static FileUtils; using System.Xml.Linq; @@ -7,7 +7,7 @@ const string GlobalToolPackageId = "dotnet-script"; var owner = "filipw"; var projectName = "dotnet-script"; var root = FileUtils.GetScriptFolder(); -var solutionFolder = Path.Combine(root,"..","src"); +var solutionFolder = Path.Combine(root, "..", "src"); var dotnetScriptProjectFolder = Path.Combine(root, "..", "src", "Dotnet.Script"); var dotnetScriptCoreProjectFolder = Path.Combine(root, "..", "src", "Dotnet.Script.Core"); var dotnetScriptDependencyModelProjectFolder = Path.Combine(root, "..", "src", "Dotnet.Script.DependencyModel"); diff --git a/build/omnisharp.json b/build/omnisharp.json index 74b7fc1b..945a3c21 100644 --- a/build/omnisharp.json +++ b/build/omnisharp.json @@ -1,6 +1,6 @@ { "script": { "enableScriptNuGetReferences": true, - "defaultTargetFramework": "net6.0" + "defaultTargetFramework": "net8.0" } } \ No newline at end of file diff --git a/global.json b/global.json index 090e95c7..97614a3d 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { - "version": "8.0.100", + "version": "9.0.100", "rollForward": "latestFeature" } } diff --git a/src/.vscode/tasks.json b/src/.vscode/tasks.json index e35e8bda..d778ce8d 100644 --- a/src/.vscode/tasks.json +++ b/src/.vscode/tasks.json @@ -46,7 +46,7 @@ "-c", "release", "-f", - "net7.0", + "net9.0", "${workspaceFolder}/Dotnet.Script.Tests/DotNet.Script.Tests.csproj" ], "problemMatcher": "$msCompile", diff --git a/src/Dotnet.Script.Core/Dotnet.Script.Core.csproj b/src/Dotnet.Script.Core/Dotnet.Script.Core.csproj index fc33ff5d..94dd6e45 100644 --- a/src/Dotnet.Script.Core/Dotnet.Script.Core.csproj +++ b/src/Dotnet.Script.Core/Dotnet.Script.Core.csproj @@ -2,9 +2,9 @@ A cross platform library allowing you to run C# (CSX) scripts with support for debugging and inline NuGet packages. Based on Roslyn. - 1.5.0 + 1.6.0 filipw - net8.0;net7.0;net6.0;netstandard2.0 + net9.0;net8.0;netstandard2.0 Dotnet.Script.Core Dotnet.Script.Core script;csx;csharp;roslyn @@ -24,18 +24,18 @@ - - - + + + - + - + \ No newline at end of file diff --git a/src/Dotnet.Script.Core/Scaffolder.cs b/src/Dotnet.Script.Core/Scaffolder.cs index b07e911e..8e52acc1 100644 --- a/src/Dotnet.Script.Core/Scaffolder.cs +++ b/src/Dotnet.Script.Core/Scaffolder.cs @@ -81,6 +81,7 @@ public void RegisterFileHandler() if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { // register dotnet-script as the tool to process .csx files + _commandRunner.Execute("reg", @"delete HKCU\Software\classes\.csx /f"); _commandRunner.Execute("reg", @"add HKCU\Software\classes\.csx /f /ve /t REG_SZ /d dotnetscript"); _commandRunner.Execute("reg", $@"add HKCU\Software\Classes\dotnetscript\Shell\Open\Command /f /ve /t REG_EXPAND_SZ /d ""\""%ProgramFiles%\dotnet\dotnet.exe\"" script \""%1\"" -- %*"""); } @@ -141,7 +142,7 @@ private void CreateLaunchConfiguration(string currentWorkingDirectory) _scriptConsole.WriteNormal("Creating VS Code launch configuration file"); string pathToLaunchFile = Path.Combine(vsCodeDirectory, "launch.json"); string installLocation = _scriptEnvironment.InstallLocation; - bool isInstalledAsGlobalTool = installLocation.Contains(".dotnet/tools", StringComparison.OrdinalIgnoreCase); + bool isInstalledAsGlobalTool = installLocation.Contains($".dotnet{Path.DirectorySeparatorChar}tools", StringComparison.OrdinalIgnoreCase); string dotnetScriptPath = Path.Combine(installLocation, "dotnet-script.dll").Replace(@"\", "/"); string launchFileContent; if (!File.Exists(pathToLaunchFile)) diff --git a/src/Dotnet.Script.Core/ScriptPublisher.cs b/src/Dotnet.Script.Core/ScriptPublisher.cs index 15452b66..faaf6b05 100644 --- a/src/Dotnet.Script.Core/ScriptPublisher.cs +++ b/src/Dotnet.Script.Core/ScriptPublisher.cs @@ -11,7 +11,7 @@ namespace Dotnet.Script.Core { public class ScriptPublisher { - private const string ScriptingVersion = "4.8.0-3.final"; + private const string ScriptingVersion = "4.11.0"; private readonly ScriptProjectProvider _scriptProjectProvider; private readonly ScriptEmitter _scriptEmitter; @@ -57,7 +57,7 @@ public void CreateAssembly(ScriptContext context, LogFactory log // only display published if we aren't auto publishing to temp folder if (!scriptAssemblyPath.StartsWith(FileUtils.GetTempPath())) { - _scriptConsole.WriteSuccess($"Published {context.FilePath} to { scriptAssemblyPath}"); + _scriptConsole.WriteSuccess($"Published {context.FilePath} to {scriptAssemblyPath}"); } } diff --git a/src/Dotnet.Script.DependencyModel.Nuget/Dotnet.Script.DependencyModel.NuGet.csproj b/src/Dotnet.Script.DependencyModel.Nuget/Dotnet.Script.DependencyModel.NuGet.csproj index 5d81c138..c2794916 100644 --- a/src/Dotnet.Script.DependencyModel.Nuget/Dotnet.Script.DependencyModel.NuGet.csproj +++ b/src/Dotnet.Script.DependencyModel.Nuget/Dotnet.Script.DependencyModel.NuGet.csproj @@ -1,5 +1,5 @@ - - + + netstandard2.0 MIT @@ -8,7 +8,7 @@ https://github.com/dotnet-script/dotnet-script.git git script;csx;csharp;roslyn;nuget - 1.5.0 + 1.6.0 A MetadataReferenceResolver that allows inline nuget references to be specified in script(csx) files. dotnet-script dotnet-script @@ -16,11 +16,10 @@ true ../dotnet-script.snk - - + - + \ No newline at end of file diff --git a/src/Dotnet.Script.DependencyModel/Dotnet.Script.DependencyModel.csproj b/src/Dotnet.Script.DependencyModel/Dotnet.Script.DependencyModel.csproj index f32e05eb..a0be1fb6 100644 --- a/src/Dotnet.Script.DependencyModel/Dotnet.Script.DependencyModel.csproj +++ b/src/Dotnet.Script.DependencyModel/Dotnet.Script.DependencyModel.csproj @@ -1,5 +1,5 @@ - - + + netstandard2.0 dotnet-script @@ -11,29 +11,24 @@ https://github.com/dotnet-script/dotnet-script.git git script;csx;csharp;roslyn;omnisharp - 1.5.0 + 1.6.0 latest true ../dotnet-script.snk - - ScriptParser.cs - - - + - - + \ No newline at end of file diff --git a/src/Dotnet.Script.DependencyModel/ProjectSystem/ScriptParser.cs b/src/Dotnet.Script.DependencyModel/ProjectSystem/ScriptParser.cs index 0d058a21..9222a220 100644 --- a/src/Dotnet.Script.DependencyModel/ProjectSystem/ScriptParser.cs +++ b/src/Dotnet.Script.DependencyModel/ProjectSystem/ScriptParser.cs @@ -53,7 +53,7 @@ public ParseResult ParseFromFiles(IEnumerable csxFiles) private static string ReadSdkFromReferenceDirective(string fileContent) { const string pattern = DirectivePatternPrefix + "r" + SdkDirectivePatternSuffix; - var match = Regex.Match(fileContent, pattern); + var match = Regex.Match(fileContent, pattern, RegexOptions.Multiline); if (match.Success) { var sdk = match.Groups[1].Value; diff --git a/src/Dotnet.Script.Desktop.Tests/Dotnet.Script.Desktop.Tests.csproj b/src/Dotnet.Script.Desktop.Tests/Dotnet.Script.Desktop.Tests.csproj index cbe23b97..5d609576 100644 --- a/src/Dotnet.Script.Desktop.Tests/Dotnet.Script.Desktop.Tests.csproj +++ b/src/Dotnet.Script.Desktop.Tests/Dotnet.Script.Desktop.Tests.csproj @@ -1,32 +1,29 @@ - - + + net472 true ../dotnet-script.snk - - - + + + all runtime; build; native; contentfiles; analyzers - + - - PreserveNewest - - + \ No newline at end of file diff --git a/src/Dotnet.Script.Extras/Dotnet.Script.Extras.csproj b/src/Dotnet.Script.Extras/Dotnet.Script.Extras.csproj index 60cc7930..c79a5f84 100644 --- a/src/Dotnet.Script.Extras/Dotnet.Script.Extras.csproj +++ b/src/Dotnet.Script.Extras/Dotnet.Script.Extras.csproj @@ -1,8 +1,8 @@ - - + + Extensions and add ons to C# scripting - 0.2.0 + 0.3.0 netstandard2.0 Dotnet.Script.Extras Dotnet.Script.Extras @@ -10,10 +10,8 @@ false false - - - + + - - + \ No newline at end of file diff --git a/src/Dotnet.Script.Shared.Tests/Dotnet.Script.Shared.Tests.csproj b/src/Dotnet.Script.Shared.Tests/Dotnet.Script.Shared.Tests.csproj index 2b928e99..2365de7b 100644 --- a/src/Dotnet.Script.Shared.Tests/Dotnet.Script.Shared.Tests.csproj +++ b/src/Dotnet.Script.Shared.Tests/Dotnet.Script.Shared.Tests.csproj @@ -1,18 +1,15 @@ + - netstandard2.0 true ../dotnet-script.snk - - + - - - + \ No newline at end of file diff --git a/src/Dotnet.Script.Tests/Dotnet.Script.Tests.csproj b/src/Dotnet.Script.Tests/Dotnet.Script.Tests.csproj index 671dd886..4b8b7da5 100644 --- a/src/Dotnet.Script.Tests/Dotnet.Script.Tests.csproj +++ b/src/Dotnet.Script.Tests/Dotnet.Script.Tests.csproj @@ -1,6 +1,7 @@ + - net8.0;net7.0;net6.0 + net9.0;net8.0 false true ../dotnet-script.snk @@ -10,14 +11,14 @@ runtime; build; native; contentfiles; analyzers all - - - + + + all runtime; build; native; contentfiles; analyzers - + diff --git a/src/Dotnet.Script.Tests/ScaffoldingTests.cs b/src/Dotnet.Script.Tests/ScaffoldingTests.cs index 6051ac73..8335de59 100644 --- a/src/Dotnet.Script.Tests/ScaffoldingTests.cs +++ b/src/Dotnet.Script.Tests/ScaffoldingTests.cs @@ -179,7 +179,7 @@ public void ShouldUpdatePathToDotnetScript() [Fact] public void ShouldCreateUnifiedLaunchFileWhenInstalledAsGlobalTool() { - Scaffolder scaffolder = CreateTestScaffolder("somefolder/.dotnet/tools/dotnet-script"); + Scaffolder scaffolder = CreateTestScaffolder($"somefolder{Path.DirectorySeparatorChar}.dotnet{Path.DirectorySeparatorChar}tools{Path.DirectorySeparatorChar}dotnet-script"); using var scriptFolder = new DisposableFolder(); scaffolder.InitializerFolder("main.csx", scriptFolder.Path); @@ -191,7 +191,7 @@ public void ShouldCreateUnifiedLaunchFileWhenInstalledAsGlobalTool() public void ShouldUpdateToUnifiedLaunchFileWhenInstalledAsGlobalTool() { Scaffolder scaffolder = CreateTestScaffolder("some-install-folder"); - Scaffolder globalToolScaffolder = CreateTestScaffolder("somefolder/.dotnet/tools/dotnet-script"); + Scaffolder globalToolScaffolder = CreateTestScaffolder($"somefolder{Path.DirectorySeparatorChar}.dotnet{Path.DirectorySeparatorChar}tools{Path.DirectorySeparatorChar}dotnet-script"); using var scriptFolder = new DisposableFolder(); scaffolder.InitializerFolder("main.csx", scriptFolder.Path); var fileContent = File.ReadAllText(Path.Combine(scriptFolder.Path, ".vscode", "launch.json")); diff --git a/src/Dotnet.Script.Tests/ScriptExecutionTests.cs b/src/Dotnet.Script.Tests/ScriptExecutionTests.cs index 8bb5fd96..f42a4a3a 100644 --- a/src/Dotnet.Script.Tests/ScriptExecutionTests.cs +++ b/src/Dotnet.Script.Tests/ScriptExecutionTests.cs @@ -250,7 +250,9 @@ public void ShouldSupportInlineNugetReferencesWithTrailingSemicoloninEvaluatedCo [Theory] [InlineData("https://gist.githubusercontent.com/seesharper/5d6859509ea8364a1fdf66bbf5b7923d/raw/0a32bac2c3ea807f9379a38e251d93e39c8131cb/HelloWorld.csx", - "Hello World")] + "Hello World")] + [InlineData("http://gist.githubusercontent.com/seesharper/5d6859509ea8364a1fdf66bbf5b7923d/raw/0a32bac2c3ea807f9379a38e251d93e39c8131cb/HelloWorld.csx", + "Hello World")] [InlineData("https://github.com/dotnet-script/dotnet-script/files/5035247/hello.csx.gz", "Hello, world!")] public void ShouldExecuteRemoteScript(string url, string output) @@ -259,14 +261,6 @@ public void ShouldExecuteRemoteScript(string url, string output) Assert.Contains(output, result.Output); } - [Fact] - public void ShouldExecuteRemoteScriptUsingTinyUrl() - { - var url = "https://tinyurl.com/y8cda9zt"; - var (output, _) = ScriptTestRunner.Default.Execute(url); - Assert.Contains("Hello World", output); - } - [Fact] public void ShouldHandleIssue268() { diff --git a/src/Dotnet.Script.Tests/ScriptProjectProviderTests.cs b/src/Dotnet.Script.Tests/ScriptProjectProviderTests.cs index 9d87775f..fdc3bc03 100644 --- a/src/Dotnet.Script.Tests/ScriptProjectProviderTests.cs +++ b/src/Dotnet.Script.Tests/ScriptProjectProviderTests.cs @@ -40,5 +40,17 @@ public void ShouldUseSpecifiedSdk() var projectFileInfo = provider.CreateProject(TestPathUtils.GetPathToTestFixtureFolder("WebApi"), _scriptEnvironment.TargetFramework, true); Assert.Equal("Microsoft.NET.Sdk.Web", XDocument.Load(projectFileInfo.Path).Descendants("Project").Single().Attributes("Sdk").Single().Value); } + + // See: https://github.com/dotnet-script/dotnet-script/issues/723 + [Theory] + [InlineData("#!/usr/bin/env dotnet-script\n#r \"sdk:Microsoft.NET.Sdk.Web\"")] + [InlineData("#!/usr/bin/env dotnet-script\n\n#r \"sdk:Microsoft.NET.Sdk.Web\"")] + public void ShouldHandleShebangBeforeSdk(string code) + { + var parser = new ScriptParser(TestOutputHelper.CreateTestLogFactory()); + var result = parser.ParseFromCode(code); + + Assert.Equal("Microsoft.NET.Sdk.Web", result.Sdk); + } } } \ No newline at end of file diff --git a/src/Dotnet.Script/Dotnet.Script.csproj b/src/Dotnet.Script/Dotnet.Script.csproj index 67bb0123..e33e4619 100644 --- a/src/Dotnet.Script/Dotnet.Script.csproj +++ b/src/Dotnet.Script/Dotnet.Script.csproj @@ -2,10 +2,10 @@ Dotnet CLI tool allowing you to run C# (CSX) scripts. - 1.5.0 + 1.6.0 filipw Dotnet.Script - net8.0;net7.0;net6.0 + net9.0;net8.0 portable dotnet-script Exe @@ -25,13 +25,10 @@ ../dotnet-script.snk - - - - - + + + + pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy