Merge pull request #69391 from NeilKleistGao/sln
Fix C# Solution Directory Project Settings
This commit is contained in:
commit
f3c68d6c83
|
@ -12,8 +12,7 @@
|
|||
<Configurations>Debug;ExportDebug;ExportRelease</Configurations>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
|
||||
<GodotProjectDir Condition=" '$(SolutionDir)' != '' ">$(SolutionDir)</GodotProjectDir>
|
||||
<GodotProjectDir Condition=" '$(SolutionDir)' == '' ">$(MSBuildProjectDirectory)</GodotProjectDir>
|
||||
<GodotProjectDir Condition=" '$(GodotProjectDir)' == '' ">$(MSBuildProjectDirectory)</GodotProjectDir>
|
||||
<GodotProjectDir>$([MSBuild]::EnsureTrailingSlash('$(GodotProjectDir)'))</GodotProjectDir>
|
||||
|
||||
<!-- Custom output paths for Godot projects. In brief, 'bin\' and 'obj\' are moved to '$(GodotProjectDir)\.godot\mono\temp\'. -->
|
||||
|
|
|
@ -57,24 +57,22 @@ namespace GodotTools
|
|||
{
|
||||
pr.Step("Generating C# project...".TTR());
|
||||
|
||||
string resourceDir = ProjectSettings.GlobalizePath("res://");
|
||||
|
||||
string path = resourceDir;
|
||||
string csprojDir = Path.GetDirectoryName(GodotSharpDirs.ProjectCsProjPath);
|
||||
string slnDir = Path.GetDirectoryName(GodotSharpDirs.ProjectSlnPath);
|
||||
string name = GodotSharpDirs.ProjectAssemblyName;
|
||||
|
||||
string guid = CsProjOperations.GenerateGameProject(path, name);
|
||||
string guid = CsProjOperations.GenerateGameProject(csprojDir, name);
|
||||
|
||||
if (guid.Length > 0)
|
||||
{
|
||||
var solution = new DotNetSolution(name)
|
||||
{
|
||||
DirectoryPath = path
|
||||
DirectoryPath = slnDir
|
||||
};
|
||||
|
||||
var projectInfo = new DotNetSolution.ProjectInfo
|
||||
{
|
||||
Guid = guid,
|
||||
PathRelativeToSolution = name + ".csproj",
|
||||
PathRelativeToSolution = Path.GetRelativePath(slnDir, GodotSharpDirs.ProjectCsProjPath),
|
||||
Configs = new List<string> { "Debug", "ExportDebug", "ExportRelease" }
|
||||
};
|
||||
|
||||
|
@ -375,6 +373,8 @@ namespace GodotTools
|
|||
{
|
||||
base._EnablePlugin();
|
||||
|
||||
ProjectSettingsChanged += GodotSharpDirs.DetermineProjectLocation;
|
||||
|
||||
if (Instance != null)
|
||||
throw new InvalidOperationException();
|
||||
Instance = this;
|
||||
|
|
|
@ -52,10 +52,9 @@ namespace GodotTools.Internals
|
|||
{
|
||||
GlobalDef("dotnet/project/assembly_name", "");
|
||||
GlobalDef("dotnet/project/solution_directory", "");
|
||||
GlobalDef("dotnet/project/c#_project_directory", "");
|
||||
}
|
||||
|
||||
private static void DetermineProjectLocation()
|
||||
public static void DetermineProjectLocation()
|
||||
{
|
||||
static string DetermineProjectName()
|
||||
{
|
||||
|
@ -76,10 +75,11 @@ namespace GodotTools.Internals
|
|||
string slnParentDir = (string)ProjectSettings.GetSetting("dotnet/project/solution_directory");
|
||||
if (string.IsNullOrEmpty(slnParentDir))
|
||||
slnParentDir = "res://";
|
||||
else if (!slnParentDir.StartsWith("res://"))
|
||||
slnParentDir = "res://" + slnParentDir;
|
||||
|
||||
string csprojParentDir = (string)ProjectSettings.GetSetting("dotnet/project/c#_project_directory");
|
||||
if (string.IsNullOrEmpty(csprojParentDir))
|
||||
csprojParentDir = "res://";
|
||||
// The csproj should be in the same folder as project.godot.
|
||||
string csprojParentDir = "res://";
|
||||
|
||||
_projectSlnPath = Path.Combine(ProjectSettings.GlobalizePath(slnParentDir),
|
||||
string.Concat(_projectAssemblyName, ".sln"));
|
||||
|
|
Loading…
Reference in New Issue