Comments (10)
Some progress reports here.
TLDR, nearest goals for now:
- Publish native nuget package (almost done);
- Upgrade cpp bindings logics into dotnet core bindings library (in progress);
- Upgrade the way options are handled in WinForms app;
- Publish bindings package to nuget;
- Configure ci autobuilds;
All the other stuff goes on later, that's the first step.
Currently I'm working on upgrading binding's core logics. I've encountered some difficulties and also lack time, so the progress goes on very slow, but I'm not abandoning the project. I've decided to rewrite the way, Ad...Options
handled in application, so in my dev branch it's functionality partly broken atm (master
branch is still safe to use for now).
Packaging cpp core into native nuget package going on pretty well, I'm ready to publish it to nuget already. I'd like to use vcpkg's simd
before it, but no one seems to grab on my issue on adding simd
into vcpkg package feed (I don't know how to do it myself unfortunately).
I also thought about WPF app, and from my perspective it would be better to write Avalonia GUI instead of WPF. It's THEORETICALLY possible to port the cpp core to linux, so writing cross-platofrm gui from the start would result into less pain in the future.
from antidupl.
Hi Gigas002,
are you still working on this? I have implemented the support of simd in vcpkg, so its now available. It should directly work, after removing all simd stuff from AntiDupl.
microsoft/vcpkg#28163
from antidupl.
Talking about x86 versions of projects, at current state it's easily to add them back again (only configuration changes needed, no adding new files, etc), but I just don't see the point.
from antidupl.
I am glad to see activities at AntiDupl project. The many items above are usefull and I was going to do some of them. In particular to remain only x64 support, replace main functionality form C++ to C#. I hope it will not only plans.
from antidupl.
Thank you for your answer! I'm in process of implementation these features, yet I can't tell yet, when I'll be able to create a solid PR. For now I hope to complete most part until the end of 2021's January.
from antidupl.
@Edi61 Sorry for a late response. Unfortunately, as you can see, I've stopped working on project due to some personal difficulties (plus, I've moved to linux on my personal pc, so I can't even build winforms/wpf projects without VMs). Feel free to contact me if you have any questions about the stages I have already done. Some stuff, like moving to AntiDupl.Native
package is easy to implement, but I haven't completed the bindings for AntiDupl.NET.Core
package
from antidupl.
Hi @Gigas002,
thanks for response
from antidupl.
@Edi61 Great to see a lot of work being done and my fork was helpful at least for a bit 👍!
Since this a discussable question, I wasn't sure where to put it, so decided not to create a new issue.
IMO it would be a good architecture change to publish AntiDupl.Native
and AntiDupl.NET.Core
packages onto nuget. That would simplify the building process for people, who doesn't want to build c++ portion of the code, install c++ toolset and just want to work on GUI apps. Plus, that could simplify the writing of CI/CD. What do you think about that?
from antidupl.
Hello @Gigas002,
I am not jet familiar with Nuget so much, but your idea sounds plausible. At least I have also seen in the discussions that they seem to be interested people just on the AntiDupl.Native.
Could you describe a little more how a nuget publish procedure would look like and also how your concrete idea was regarding CI/CD?
from antidupl.
@Edi61 Native package, in fact, is doesn't contain any code with exception of .csproj
file. The example for AntiDupl.Native
in my repo should work just fine.
First PropertyGroup
just defines package's metadata.
Next block controls Release
-specific metadata. The nuget package will automatically be built on release if GeneratePackageOnBuild
property is set to true
.
The last ItemGroup
block sets a path to a binaries to put into library (pre-built c++ AntiDupl
binaries), e.g. <None Include="../AntiDupl/bin/$(Platform)/Release/*.dll">
. After that, the package must be manually put onto https://www.nuget.org/. It's possible to auto-update it with CI/CD afterwards, but the first push must be manual, I think.
I also think, that AntiDupl
(C++ project) and AntiDupl.Native
should have it's own configurations (e.g. <Configurations>Native-Debug;Native-Release</Configurations>
, so we can separate them from build in C#-only CI/CD config.
I'm not familiar with CI/CD for C++ projects, but as we separate native part from C# code I think I'll contribute to a repo. If you want to implement it by yourself, it's pretty easy to do with GitHub's CI/CD tools. Since this project doesn't have any tests, the yml
code would look something like this:
name: .NET
on: [push, pull_request]
jobs:
# Build on Windows
build-windows:
runs-on: windows-latest
steps:
- uses: actions/[email protected]
- name: Setup .NET
uses: actions/[email protected]
with:
dotnet-version: 6.0.x
- name: Restore dependencies
run: dotnet restore
- name: Build
run: dotnet build --no-restore -c Release /p:Platform=x64
for a build tasks. Now, for CD, I haven't written this with GitHub (though I don't think would be hard to implement), but I've used AppVeyor. It uses yml
files as config as well, it's syntax is pretty straightforward and it also has a web GUI for creating config.
from antidupl.
Related Issues (1)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from antidupl.