Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[CompilerApp] Use StrideEditorTargetFramework #1969

Closed
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -118,8 +118,8 @@
<Target Name="_StridePrepareAssetCompiler">
<PropertyGroup>
<!-- First try NuGet layout, then git checkout -->
<StrideCompileAssetCommand Condition="'$(StrideCompileAssetCommand)' == '' And Exists('$(MSBuildThisFileDirectory)..\lib\net6.0-windows7.0\')">$(MSBuildThisFileDirectory)..\tools\net6.0-windows7.0\Stride.Core.Assets.CompilerApp.exe</StrideCompileAssetCommand>
<StrideCompileAssetCommand Condition="'$(StrideCompileAssetCommand)' == '' And Exists('$(MSBuildThisFileDirectory)..\Stride.Core.Assets.CompilerApp.csproj')">$(MSBuildThisFileDirectory)..\bin\$(Configuration)\net6.0-windows7.0\Stride.Core.Assets.CompilerApp.exe</StrideCompileAssetCommand>
<StrideCompileAssetCommand Condition="'$(StrideCompileAssetCommand)' == '' And Exists('$(MSBuildThisFileDirectory)..\lib\net6.0\')">$(MSBuildThisFileDirectory)..\tools\net6.0\Stride.Core.Assets.CompilerApp.exe</StrideCompileAssetCommand>
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That path doesn't look correct by the way. I can't find that tools folder in either the nuget package or the installed stride.

In addition, inside the nuget package, the file has a .dll extension, not .exe.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i can't find the .exe too

Copy link
Contributor

@Doprez Doprez Oct 19, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When building with net6.0-windows7.0 I get the tools folder with the exe in it.
image
But not with just net6.0 and that was part of the problem it seemed.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can you gen exe with the .net8.0? @Doprez

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it's the same issue, with net8.0-windows it works but with just net8.0 it doesn't.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

https://learn.microsoft.com/en-us/dotnet/core/deploying/
'exe' is a Windows thing so only appears when the platform is specified, otherwise you only get the 'cross-platform dll'

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That makes more sense. I guess the next question is why is it an exe instead of a loadable dll/nuget like other libraries to remove this dependancy. Converting the CompilerApp cross platform would probably be a fairly large task I am guessing.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The way this is worked around for AssemblyProcessor is that it is loaded as an MSBuild task, but here it wouldn't be possible (VS would require it to target netstandard2.0).
I suggest reverting asset compiler to target windows for the moment to unblock compilation, and file an issue to discuss how to make it run cross platform correctly (linked with the Linux issue made by Caspian).

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wouldn't be better to have a main assembly as a dll and another project to build it as an app? That way there could be a different app for each supported platform.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it be possible instead to invoke dotnet /path/to/dll?

<StrideCompileAssetCommand Condition="'$(StrideCompileAssetCommand)' == '' And Exists('$(MSBuildThisFileDirectory)..\Stride.Core.Assets.CompilerApp.csproj')">$(MSBuildThisFileDirectory)..\bin\$(Configuration)\net6.0\Stride.Core.Assets.CompilerApp.exe</StrideCompileAssetCommand>
</PropertyGroup>

<Error Condition="!Exists('$(StrideCompileAssetCommand)')" Text="Stride AssetCompiler could not be found (Command: &quot;$(StrideCompileAssetCommand)&quot;)"/>
Expand Down