modified readme and added missing files

This commit is contained in:
emmaus 2018-06-16 15:49:03 +00:00
parent f309876d16
commit a8696f0664
4 changed files with 53 additions and 7 deletions

View file

@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.25123.0
# Visual Studio 15
VisualStudioVersion = 15.0.27703.2000
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Generator.Bind", "src\Generator.Bind\Generator.Bind.csproj", "{31D19132-0000-0000-0000-000000000000}"
EndProject
@ -29,10 +29,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".paket", ".paket", "{F1A570
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "project", "project", "{5EEEC96B-BD2F-45B0-935D-19E9E6D7D969}"
ProjectSection(SolutionItems) = preProject
.gitignore = .gitignore
build.fsx = build.fsx
README.md = README.md
RELEASE_NOTES.md = RELEASE_NOTES.md
.gitignore = .gitignore
EndProjectSection
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "OpenTK.Tests", "tests\OpenTK.Tests\OpenTK.Tests.fsproj", "{6801C263-ADDA-4A7B-979D-649BCB5A1DF7}"
@ -43,6 +43,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenTK.Tests.Math", "tests\
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "OpenTK.Tests.Generators", "tests\OpenTK.Tests.Generators\OpenTK.Tests.Generators.fsproj", "{2B11AAEB-D8AC-4356-938F-532D720E0C30}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenTK.Standard", "src\OpenTK\OpenTK.Standard.csproj", "{67F02FD3-8F7F-4D89-8551-359993271CA3}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -97,6 +99,10 @@ Global
{2B11AAEB-D8AC-4356-938F-532D720E0C30}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2B11AAEB-D8AC-4356-938F-532D720E0C30}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2B11AAEB-D8AC-4356-938F-532D720E0C30}.Release|Any CPU.Build.0 = Release|Any CPU
{67F02FD3-8F7F-4D89-8551-359993271CA3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{67F02FD3-8F7F-4D89-8551-359993271CA3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{67F02FD3-8F7F-4D89-8551-359993271CA3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{67F02FD3-8F7F-4D89-8551-359993271CA3}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -107,4 +113,7 @@ Global
{C2B07CD9-B388-4FC3-AF31-C648F7EA904E} = {1857BB8E-1A35-4EBF-9F6D-685F11DC025B}
{2B11AAEB-D8AC-4356-938F-532D720E0C30} = {1857BB8E-1A35-4EBF-9F6D-685F11DC025B}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {CFF5ADCD-8B5E-4C07-ACCA-304C81D4D839}
EndGlobalSection
EndGlobal

View file

@ -59,8 +59,8 @@ cd opentk # Enter the source directory
./build.sh # Build on Mono (Linux / Mac OS X)
```
After this is done at least once, you can build OpenTK normally through
your IDE.
After this is done at least once, you can build OpenTK.Standard project normally through
your IDE. This fork is only for building opentk for .Net Standard, and not for .Net Framework.
News
====

View file

@ -35,5 +35,12 @@ namespace OpenTK.Rewrite
[Option("dllimport", Default = false,
HelpText = "Force native calls to use DllImport instead of GetProcAddress.")]
public bool UseDLLImport { get; set; }
/// <summary>
/// Toggles rewriting for NetStandard.
/// </summary>
[Option('n', "netstandard", Default = false,
HelpText = "Toggles rewriting for NetStandard.")]
public bool IsNetStandard { get; set; }
}
}

View file

@ -55,6 +55,8 @@ namespace OpenTK.Rewrite
program.Rewrite();
}
private static string GetCoreAssemblyName() => Options.IsNetStandard ? "netstandard" : "mscorlib";
// mscorlib types
private static AssemblyDefinition mscorlib;
@ -93,6 +95,21 @@ namespace OpenTK.Rewrite
Console.Error.WriteLine("No keyfile specified or keyfile missing.");
}
if (Options.IsNetStandard)
{
DefaultAssemblyResolver resolver = new DefaultAssemblyResolver();
string searchPath = GetNetstandardRefPath();
if (!Directory.Exists(searchPath))
{
Console.Error.WriteLine(
"Could not locate .NET Standard reference assemblies. This is necessary for binary rewriting to proceed.");
return;
}
resolver.AddSearchDirectory(searchPath);
read_params.AssemblyResolver = resolver;
}
// Load assembly and process all modules
try
{
@ -108,7 +125,7 @@ namespace OpenTK.Rewrite
try
{
var resolved = module.AssemblyResolver.Resolve(reference);
if (reference.Name == "mscorlib")
if (reference.Name == GetCoreAssemblyName())
{
mscorlib = resolved;
}
@ -122,7 +139,7 @@ namespace OpenTK.Rewrite
if (mscorlib == null)
{
Console.Error.WriteLine("Failed to locate mscorlib");
Console.Error.WriteLine("Failed to locate " + GetCoreAssemblyName());
return;
}
TypeMarshal = mscorlib.MainModule.GetType("System.Runtime.InteropServices.Marshal");
@ -1073,5 +1090,18 @@ namespace OpenTK.Rewrite
{
il.Emit(OpCodes.Call, reference);
}
private string GetNetstandardRefPath()
{
return Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.UserProfile),
".nuget",
"packages",
"netstandard.library",
"2.0.1",
"build",
"netstandard2.0",
"ref");
}
}
}