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

VS2017 cut over and removal of legacy or deprecated items #261

Merged
merged 6 commits into from May 23, 2017
Merged

VS2017 cut over and removal of legacy or deprecated items #261

merged 6 commits into from May 23, 2017

Conversation

ghost
Copy link

@ghost ghost commented May 18, 2017

No description provided.

@jonorossi
Copy link
Member

jonorossi commented May 19, 2017

I just realised .NET 3.5 and 4.0 support hasn't been added to the new project files and AppVeyor build.

I was also surprised to see CommonAssemblyInfo.cs deleted, some of it hasn't been replaced by the new tooling.

Edit: Other than those two the rest of the pull request looks good.

@ghost
Copy link
Author

ghost commented May 19, 2017

Good stuff, will see if I can get this going today

@ghost
Copy link
Author

ghost commented May 19, 2017

Saw this in the logs: https://ci.appveyor.com/project/fir3pho3nixx/core/build/1.0.249#L172

It claims "The reference assemblies for framework ".NETFramework,Version=v3.5"" were not found.

I tried the FrameworkPathOverride from here: dotnet/msbuild#1333

Unfortunately it complains that System.Web could not be found. Not sure how to progress this.

On the plus side net40 seems to work OK.

Do we need net35?

@jonorossi
Copy link
Member

Unfortunately it complains that System.Web could not be found. Not sure how to progress this.

Seems Brad and others are having the same problem.

Those reference assemblies are definitely strange for .NET 3.5. Since reference assemblies were a new thing for .NET 4.0 and then it seems ".NET 3.5 Client Profile" reference assemblies were made, can we set that FrameworkPathOverride to C:\Windows\Microsoft.NET\Framework\v2.0.50727 which has all the assemblies?

Do we need net35?

If possible, I'd like to keep .NET 3.5 support maybe until Microsoft stops supporting it (2020-01-13, since it shipped with Windows 7) to allow the widest range of usage, the main 3 mocking frameworks currently support:

  • Moq is now .NET 4.5+
  • FakeItEasy is .NET 4.0+
  • NSubstitute is .NET 3.5+

Gavin van der Merwe added 2 commits May 22, 2017 12:41
@ghost
Copy link
Author

ghost commented May 22, 2017

Got net35 working on appveyor.

You can view them in the artifacts here: https://ci.appveyor.com/project/fir3pho3nixx/core/build/1.0.252/artifacts

I just need to deal with the partially trusted assemblies piece and we should be good to go.

@ghost
Copy link
Author

ghost commented May 23, 2017

@jonorossi - Just a nudge to see if this OK to merge. Sorry this has taken so long, my internet is misbehaving. Would like to start on Windsor for this.

@jonorossi
Copy link
Member

I didn't realise you were done with CommonAssemblyInfo.cs, thanks.

I'm not sure how you got .NET 3.5 to compile without defining FEATURE_LEGACY_REFLECTION_API. Happy to merge it now, but we'll have to do an assembly diff against v4.0.0 before releasing.

@jonorossi jonorossi merged commit 0efb283 into castleproject:refactor-build May 23, 2017
@ghost
Copy link
Author

ghost commented May 23, 2017

@jonorossi - Yes, I found the omission of FEATURE_LEGACY_REFLECTION_API build symbol a bit strange for net35. A better way of making sure this works would be to enable unit tests for all the framework monikers but this would start producing failures similar to #253.

What tool would you use to diff the assemblies and what would you be looking for? Maybe this is something I can do in the background and report back on?

@jonorossi
Copy link
Member

Doesn't the new test runner have to run on .NET 4.6.1? I guess that means it isn't really testing much. Would be great to get unit testing for all targets back again.

I've used https://github.com/bitdiffer/bitdiffer to graphically compare assemblies before with success. Just change the filter settings to hide changes to privates and implementations.

@ghost
Copy link
Author

ghost commented May 23, 2017

Yes, the reason I did that was so that the netcoreapp1.1 framework target would compile using the same csproj as the one we were using for DesktopClr(in this case net461, think the lowest I could go was net452). If you try to do netcoreapp1.1 with net35 for arguments sake it will kick out build errors saying the two are not compatible.

You were right, there is a problem with net35. After bitdiff'ing I could see the RuntimeVersion value is listed as v4.0.30319 for the net35 assembly. I expected this to be v2.0.50727.

Also tried your suggestion of setting the FrameworkPathOverride to C:\Windows\Microsoft.NET\Framework\v2.0.50727, doing this kicked out an entire host of errors to do with System.Linq and by changing it to use C:\Windows\Microsoft.NET\Framework\v4.0.30319\ got things going again in appveyor but this RuntimeVersion tells me our targetting for net35 is a complete and utter sham on the VS2017 tooling ...

Let me investigate this more, we cannot release this in it's current state.

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 this pull request may close these issues.

1 participant