meiktranel / nxports Goto Github PK
View Code? Open in Web Editor NEWA platform agnostic tool to export .NET functions at build time.
License: MIT License
A platform agnostic tool to export .NET functions at build time.
License: MIT License
Currently all errors are duplicated by an unnecessary extra error log entry.
For PInvoke to work, we need to specify the bitness at build time. Meaning the old windows-only AnyCPU configuration is an absolute no go.
In this case we should error interrupt the build.
UnmanagedExports
defaults to StdCall
while we use Cdecl
.
Upstream issue: 0xd4d/dnlib#303
Exports can conceptually only work with static methods. Currently there are no checks to detect if a class method was decorated with the DLLExport
attribute.
Now that we've been granted access to GPR and Actions Beta, we should explore to move away from Azure DevOps, because it's just to heavy for our needs, while GitHub Actions offers a very tight integration and a very nice barebones model to work with.
I would like to contribute the code needed to support .NET Core.
This would require:
CallingConvetion
Because the attribute doesn't have any purpose at runtime, we should be removing them including the assembly reference onto NXPorts.Attributes.
When opening a project using NXPorts 0.1.0 without already built binaries in the obj directory, the
AssemblyExportWriterTask tries to read from the intermediate assembly which does not exist yet... failing the task.
To add insult to injury, the fact that msbuild is crashed prevents the dll from being produced, forcing you to remove NXPorts before actually being able to do designtime anything.
MSB4018 The "AssemblyExportWriterTask" task failed unexpectedly.
System.ArgumentException: The given file path does not exist.
Parameter name: assemblyFilePath
at NXPorts.ExportAttributedAssembly..ctor(String assemblyFilePath) in d:\a\1\s\src\NXPorts\ExportAttributedAssembly.cs:line 17
at NXPorts.AssemblyExportWriterTask.Execute() in d:\a\1\s\src\NXPorts\AssemblyExportWriterTask.cs:line 27
at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext()
When building using NXPorts symbols are entirely left in the dirt.
I guess the name "DllExport" more accurately expresses what is done, in comparison to "Export".
NXPorts & .NET Framework currently allow for a DLL to export two functions using the same alias. This results in multiple entries in the export table with the same function name. This is allowed behavior since export functions are identified by their cardinal index in the export table; in 99% cases however this entirely undesired behavior since no one really loads via index.
1.1
NuGet Gallery
Because of our unique requirements concerning lib/
and build/
contents, we currently have to manually write the nuspec file. This is very tedious. We should move back into the safetynet of the dotnet sdk.
When subsequently building without triggering a new compile NXPorts.Attributes.dll
will get copied to the output directory again.
While #4 is already closed, a dotnet build
will still copy the NXPorts.Attributes
assembly over. I have to inspect whether this is due to a reference or whether there is additional work that needs to be done on the MSBuild side of things.
For snoop i don't want separate projects for x86 and x64.
The exporter i wrote for snoop creates both from an input assembly that is AnyCpu and i would like to contribute that code here.
I guess we'd need some msbuild properties to express this.
Any suggestions for that?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.