diff --git a/Source/Tools/Flax.Build/Build/Builder.Projects.cs b/Source/Tools/Flax.Build/Build/Builder.Projects.cs
index 008e9d982..59538364c 100644
--- a/Source/Tools/Flax.Build/Build/Builder.Projects.cs
+++ b/Source/Tools/Flax.Build/Build/Builder.Projects.cs
@@ -513,6 +513,7 @@ namespace Flax.Build
// Combine build options from this module
project.CSharp.SystemReferences.AddRange(moduleBuildOptions.ScriptingAPI.SystemReferences);
project.CSharp.FileReferences.AddRange(moduleBuildOptions.ScriptingAPI.FileReferences);
+ project.CSharp.NugetPackageReferences.AddRange(moduleBuildOptions.NugetPackageReferences);
// Find references based on the modules dependencies (external or from projects)
foreach (var dependencyName in moduleBuildOptions.PublicDependencies.Concat(moduleBuildOptions.PrivateDependencies))
diff --git a/Source/Tools/Flax.Build/Build/DotNet/Builder.DotNet.cs b/Source/Tools/Flax.Build/Build/DotNet/Builder.DotNet.cs
index 2619f1a17..75a916296 100644
--- a/Source/Tools/Flax.Build/Build/DotNet/Builder.DotNet.cs
+++ b/Source/Tools/Flax.Build/Build/DotNet/Builder.DotNet.cs
@@ -109,6 +109,7 @@ namespace Flax.Build
// Merge module into target environment
buildData.TargetOptions.LinkEnv.InputFiles.AddRange(moduleOptions.OutputFiles);
buildData.TargetOptions.DependencyFiles.AddRange(moduleOptions.DependencyFiles);
+ buildData.TargetOptions.NugetPackageReferences.AddRange(moduleOptions.NugetPackageReferences);
buildData.TargetOptions.OptionalDependencyFiles.AddRange(moduleOptions.OptionalDependencyFiles);
buildData.TargetOptions.Libraries.AddRange(moduleOptions.Libraries);
buildData.TargetOptions.DelayLoadLibraries.AddRange(moduleOptions.DelayLoadLibraries);
@@ -141,6 +142,14 @@ namespace Flax.Build
var dstFile = Path.Combine(outputPath, Path.GetFileName(srcFile));
graph.AddCopyFile(dstFile, srcFile);
}
+
+ var nugetPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".nuget", "packages");
+ foreach (var reference in targetBuildOptions.NugetPackageReferences)
+ {
+ var path = Path.Combine(nugetPath, reference.Name, reference.Version, "lib", reference.Framework, $"{reference.Name}.dll");
+ var dstFile = Path.Combine(outputPath, Path.GetFileName(path));
+ graph.AddCopyFile(dstFile, path);
+ }
}
}
@@ -283,6 +292,18 @@ namespace Flax.Build
args.Add(string.Format("/reference:\"{0}{1}.dll\"", referenceAssemblies, reference));
foreach (var reference in fileReferences)
args.Add(string.Format("/reference:\"{0}\"", reference));
+
+ // Reference Nuget package
+ if (buildData.TargetOptions.NugetPackageReferences.Any())
+ {
+ var nugetPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".nuget", "packages");
+ foreach (var reference in buildOptions.NugetPackageReferences)
+ {
+ var path = Path.Combine(nugetPath, reference.Name, reference.Version, "lib", reference.Framework, $"{reference.Name}.dll");
+ args.Add(string.Format("/reference:\"{0}\"", path));
+ }
+ }
+
#if USE_NETCORE
foreach (var systemAnalyzer in buildOptions.ScriptingAPI.SystemAnalyzers)
args.Add(string.Format("/analyzer:\"{0}{1}.dll\"", referenceAnalyzers, systemAnalyzer));
diff --git a/Source/Tools/Flax.Build/Build/EngineTarget.cs b/Source/Tools/Flax.Build/Build/EngineTarget.cs
index 6a44991a2..827205e91 100644
--- a/Source/Tools/Flax.Build/Build/EngineTarget.cs
+++ b/Source/Tools/Flax.Build/Build/EngineTarget.cs
@@ -220,6 +220,7 @@ namespace Flax.Build
exeBuildOptions.LinkEnv.InputLibraries.Add(Path.Combine(buildOptions.OutputFolder, buildOptions.Platform.GetLinkOutputFileName(LibraryName, engineLibraryType)));
exeBuildOptions.LinkEnv.InputFiles.AddRange(mainModuleOptions.OutputFiles);
exeBuildOptions.DependencyFiles.AddRange(mainModuleOptions.DependencyFiles);
+ exeBuildOptions.NugetPackageReferences.AddRange(mainModuleOptions.NugetPackageReferences);
exeBuildOptions.OptionalDependencyFiles.AddRange(mainModuleOptions.OptionalDependencyFiles);
exeBuildOptions.Libraries.AddRange(mainModuleOptions.Libraries);
exeBuildOptions.DelayLoadLibraries.AddRange(mainModuleOptions.DelayLoadLibraries);
diff --git a/Source/Tools/Flax.Build/Build/NativeCpp/BuildOptions.cs b/Source/Tools/Flax.Build/Build/NativeCpp/BuildOptions.cs
index 0aa37b84e..7bda689e1 100644
--- a/Source/Tools/Flax.Build/Build/NativeCpp/BuildOptions.cs
+++ b/Source/Tools/Flax.Build/Build/NativeCpp/BuildOptions.cs
@@ -70,6 +70,40 @@ namespace Flax.Build.NativeCpp
Annotations,
}
+ ///
+ /// Defines a Nuget Package
+ ///
+ public struct NugetPackage
+ {
+ ///
+ /// The name of the nuget package.
+ ///
+ public string Name;
+
+ ///
+ /// The version of the nuget package.
+ ///
+ public string Version;
+
+ ///
+ /// The target framework. ex. net8.0, netstandard2.1
+ ///
+ public string Framework;
+
+ ///
+ /// Initialize the nuget package.
+ ///
+ /// The name of the package.
+ /// The version of the package.
+ /// The target framework. ex. net8.0, netstandard2.1, etc.
+ public NugetPackage(string name, string version, string framework)
+ {
+ Name = name;
+ Version = version;
+ Framework = framework;
+ }
+ }
+
///
/// The native C++ module build settings container.
///
@@ -129,6 +163,11 @@ namespace Flax.Build.NativeCpp
/// The collection of the modules that are required by this module (for linking).
///
public List PrivateDependencies = new List();
+
+ ///
+ /// The nuget package references.
+ ///
+ public List NugetPackageReferences = new List();
///
/// The collection of defines with preprocessing symbol for a source files of this module. Inherited by the modules that include it.
diff --git a/Source/Tools/Flax.Build/Build/NativeCpp/Builder.NativeCpp.cs b/Source/Tools/Flax.Build/Build/NativeCpp/Builder.NativeCpp.cs
index 1d0d3c695..664bfb63f 100644
--- a/Source/Tools/Flax.Build/Build/NativeCpp/Builder.NativeCpp.cs
+++ b/Source/Tools/Flax.Build/Build/NativeCpp/Builder.NativeCpp.cs
@@ -425,6 +425,7 @@ namespace Flax.Build
moduleOptions.LinkEnv.InputFiles.AddRange(dependencyOptions.OutputFiles);
moduleOptions.DependencyFiles.AddRange(dependencyOptions.DependencyFiles);
moduleOptions.OptionalDependencyFiles.AddRange(dependencyOptions.OptionalDependencyFiles);
+ moduleOptions.NugetPackageReferences.AddRange(dependencyOptions.NugetPackageReferences);
moduleOptions.PrivateIncludePaths.AddRange(dependencyOptions.PublicIncludePaths);
moduleOptions.Libraries.AddRange(dependencyOptions.Libraries);
moduleOptions.DelayLoadLibraries.AddRange(dependencyOptions.DelayLoadLibraries);
@@ -440,6 +441,7 @@ namespace Flax.Build
moduleOptions.LinkEnv.InputFiles.AddRange(dependencyOptions.OutputFiles);
moduleOptions.DependencyFiles.AddRange(dependencyOptions.DependencyFiles);
moduleOptions.OptionalDependencyFiles.AddRange(dependencyOptions.OptionalDependencyFiles);
+ moduleOptions.NugetPackageReferences.AddRange(dependencyOptions.NugetPackageReferences);
moduleOptions.PublicIncludePaths.AddRange(dependencyOptions.PublicIncludePaths);
moduleOptions.Libraries.AddRange(dependencyOptions.Libraries);
moduleOptions.DelayLoadLibraries.AddRange(dependencyOptions.DelayLoadLibraries);
@@ -934,6 +936,7 @@ namespace Flax.Build
buildData.TargetOptions.LinkEnv.InputFiles.AddRange(moduleOptions.OutputFiles);
buildData.TargetOptions.DependencyFiles.AddRange(moduleOptions.DependencyFiles);
buildData.TargetOptions.OptionalDependencyFiles.AddRange(moduleOptions.OptionalDependencyFiles);
+ buildData.TargetOptions.NugetPackageReferences.AddRange(moduleOptions.NugetPackageReferences);
buildData.TargetOptions.Libraries.AddRange(moduleOptions.Libraries);
buildData.TargetOptions.DelayLoadLibraries.AddRange(moduleOptions.DelayLoadLibraries);
buildData.TargetOptions.ScriptingAPI.Add(moduleOptions.ScriptingAPI);
@@ -1054,6 +1057,13 @@ namespace Flax.Build
var dstFile = Path.Combine(outputPath, Path.GetFileName(srcFile));
graph.AddCopyFile(dstFile, srcFile);
}
+ var nugetPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".nuget", "packages");
+ foreach (var reference in targetBuildOptions.NugetPackageReferences)
+ {
+ var path = Path.Combine(nugetPath, reference.Name, reference.Version, "lib", reference.Framework, $"{reference.Name}.dll");
+ var dstFile = Path.Combine(outputPath, Path.GetFileName(path));
+ graph.AddCopyFile(dstFile, path);
+ }
}
}
@@ -1192,6 +1202,7 @@ namespace Flax.Build
buildData.TargetOptions.ExternalModules.AddRange(moduleOptions.ExternalModules);
buildData.TargetOptions.DependencyFiles.AddRange(moduleOptions.DependencyFiles);
buildData.TargetOptions.OptionalDependencyFiles.AddRange(moduleOptions.OptionalDependencyFiles);
+ buildData.TargetOptions.NugetPackageReferences.AddRange(moduleOptions.NugetPackageReferences);
}
}
}
@@ -1253,6 +1264,13 @@ namespace Flax.Build
var dstFile = Path.Combine(outputPath, Path.GetFileName(srcFile));
graph.AddCopyFile(dstFile, srcFile);
}
+ var nugetPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".nuget", "packages");
+ foreach (var reference in targetBuildOptions.NugetPackageReferences)
+ {
+ var path = Path.Combine(nugetPath, reference.Name, reference.Version, "lib", reference.Framework, $"{reference.Name}.dll");
+ var dstFile = Path.Combine(outputPath, Path.GetFileName(path));
+ graph.AddCopyFile(dstFile, path);
+ }
}
}
diff --git a/Source/Tools/Flax.Build/Projects/Project.cs b/Source/Tools/Flax.Build/Projects/Project.cs
index 5aa77a453..46ae6102b 100644
--- a/Source/Tools/Flax.Build/Projects/Project.cs
+++ b/Source/Tools/Flax.Build/Projects/Project.cs
@@ -229,6 +229,11 @@ namespace Flax.Build.Projects
/// The .Net libraries references (dll or exe files paths).
///
public HashSet FileReferences;
+
+ ///
+ /// The nuget references.
+ ///
+ public HashSet NugetPackageReferences;
///
/// The output folder path (optional).
@@ -248,6 +253,7 @@ namespace Flax.Build.Projects
{
SystemReferences = new HashSet(),
FileReferences = new HashSet(),
+ NugetPackageReferences = new HashSet(),
};
///
diff --git a/Source/Tools/Flax.Build/Projects/VisualStudio/CSProjectGenerator.cs b/Source/Tools/Flax.Build/Projects/VisualStudio/CSProjectGenerator.cs
index da6907f78..35bc7b0ac 100644
--- a/Source/Tools/Flax.Build/Projects/VisualStudio/CSProjectGenerator.cs
+++ b/Source/Tools/Flax.Build/Projects/VisualStudio/CSProjectGenerator.cs
@@ -175,6 +175,19 @@ namespace Flax.Build.Projects.VisualStudio
csProjectFileContent.AppendLine(" ");
}
+ // Nuget
+ if (project.CSharp.NugetPackageReferences.Any())
+ {
+ csProjectFileContent.AppendLine(" ");
+
+ foreach (var reference in project.CSharp.NugetPackageReferences)
+ {
+ csProjectFileContent.AppendLine(string.Format(" ", reference.Name, reference.Version));
+ }
+
+ csProjectFileContent.AppendLine(" ");
+ }
+
// References
csProjectFileContent.AppendLine(" ");
diff --git a/Source/Tools/Flax.Build/Projects/VisualStudio/CSSDKProjectGenerator.cs b/Source/Tools/Flax.Build/Projects/VisualStudio/CSSDKProjectGenerator.cs
index df1424e95..f126bd3ef 100644
--- a/Source/Tools/Flax.Build/Projects/VisualStudio/CSSDKProjectGenerator.cs
+++ b/Source/Tools/Flax.Build/Projects/VisualStudio/CSSDKProjectGenerator.cs
@@ -134,6 +134,20 @@ namespace Flax.Build.Projects.VisualStudio
}
// References
+
+ // Nuget
+ if (project.CSharp.NugetPackageReferences.Any())
+ {
+ csProjectFileContent.AppendLine(" ");
+
+ foreach (var reference in project.CSharp.NugetPackageReferences)
+ {
+ csProjectFileContent.AppendLine(string.Format(" ", reference.Name, reference.Version));
+ }
+
+ csProjectFileContent.AppendLine(" ");
+ csProjectFileContent.AppendLine("");
+ }
csProjectFileContent.AppendLine(" ");