Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support new csproj format. #1686

Closed
Bimble opened this issue Mar 12, 2018 · 7 comments · Fixed by #5145
Closed

Support new csproj format. #1686

Bimble opened this issue Mar 12, 2018 · 7 comments · Fixed by #5145
Assignees

Comments

@Bimble
Copy link

Bimble commented Mar 12, 2018

I came across this awesome open source project and wanted to use it. As I would prefer to use net standard with packages I hit some obstacles. I saw an open issue regarding net core (#452), this fits in the same direction, a first step for this is to use the new csproj format.

I converted the Algorithm.Framework project to the new style as an example, if this is a change that the project wants then I'm willing to convert the rest of the project too. issue-452/new-csproj-format branch in github/Bimble/Lean

I haven't been successful yet to compile it with mono (only windows available at the moment, which gave me some trouble), I'll try it out on a linux host soon, but considering that msbuild is now open source and mono has adapted it and deprecated xbuild, I do expect it to work.

Do note that this will probably break the VS2015 support.

@mchandschuh
Copy link
Contributor

Are there any extensions that would enable 2015 support? I think it may still be too soon to drop support for 2015.

@Bimble
Copy link
Author

Bimble commented Mar 13, 2018

From what I can see there are currently no extensions that would enable VS2015 support, nor any plans to start supporting the new format in VS2015. So switching would break VS2015 support.

@jaredbroad
Copy link
Member

Thanks @Bimble - appreciate the initiative. We are excited to move to .Net Core but require all the dependencies to convert too so we're locked into Mono for now. Many of our users are mac/linux so we try write everything to be fully cross platform from the start.

Perhaps we could experiment with another project file to sit alongside in the meantime? e.g.
QuantConnect.Algorithm.Framework.NetCore2018.csproj and PR into a branch

@Bimble
Copy link
Author

Bimble commented Mar 15, 2018

@jaredbroad, with this change it should still be possible to use Mono, it is just the csproj format that changes, which also supports the regular .net framework. A next step could be to, based on the new format, to try move things to .net standard, which requires the new format and is also supported by mono.

The new format does not limit one to .net core, it is just a new format introduced in VS2017 and is a requirement for .net core/standard, but still supports .net framework. Due to this it would break VS2015 support.

A separate project file is quite a realistic, as the new format does not require each and every file to be included, which means it wouldn't require much maintenance.

@Bimble
Copy link
Author

Bimble commented Mar 15, 2018

Hooked up travis to my fork and tuned the config for msbuild, the result you can see here link. As can be seen mono is still used, and the project compiles using the new csproj format (mixed actually, as I only converted one project). xbuild is swapped for msbuild, and an additional nuget restore is required due to the mixed setup of old and new csproj files.

@Bimble
Copy link
Author

Bimble commented Mar 28, 2018

I have added a set of additional project files to the existing ones for the new format, in addition there is an additional sln file that only uses the new csproj files. The result can be seen here, including the travis build. The new format also makes it easier to add packages, I went a bit further and also added this, result here, though if this were to be pulled it should probably only trigger for a release branch.
Feedback/comments are welcome.

The python project hasn't been converted, nor was it mandatory. It seems that there are two projects (a csproj and a pyproj) that use the same content, and as I am not too familiar with python, I haven't converted this yet. If there is anyone that could point me in the right direction regarding this, then please.

Projects that haven't been converted and weren't mandatory for the tests/references.

  • Algorithm.Python
  • Algorithm.Java
  • Algorithm.VisualBasic
  • Views
  • VisualStudioPlugin

@Martin-Molinero
Copy link
Member

Another migration example at master...gsalaz98:feature-452-dotnet-core-3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants