Peter Jas created LOG4NET-567:
---------------------------------

             Summary: Use new csproj format to target multiple frameworks
                 Key: LOG4NET-567
                 URL: https://issues.apache.org/jira/browse/LOG4NET-567
             Project: Log4net
          Issue Type: Improvement
            Reporter: Peter Jas


I have noticed that recently all the csprojs are converged to one monolithic 
"old-style" csproj. It is an improvement but what about xproj and .NET Core?

Instead of having xproj+project.json and csproj with two solution files and 
multiple packages.config files in the repo, use modern csproj format, which is 
compact, clear, able to target multiple platforms at once, does not require any 
additional packages.config etc. file.

bq. The idea is to remove netstandard directory from the root and maintain only 
new-format csproj file.

Additional advantange include easy to package for _all supported platforms_ 
with ONE command: [{{dotnet 
pack}}|https://docs.microsoft.com/en-us/dotnet/articles/core/tools/dotnet-pack].

Example: 
https://github.com/JamesNK/Newtonsoft.Json/blob/b311d91/Src/Newtonsoft.Json/Newtonsoft.Json.csproj.
 James is supporting the whole JSON.NET for .NET Framework 2.0 to .NET Standard 
1.3 with a single new-csproj file.

Sometimes we want to explicitly target mono, other times the neutral grouds 
like PCL or NetStandard1.0 do the job. An example of explict targeting:

{code:xml}
<TargetFrameworks>net45;netstandard1.1;netstandard1.3;win81;MonoAndroid7;Xamarin.iOS10</TargetFrameworks>
{code}

see this example in action: 
https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/blob/0ae178520/src/Microsoft.Identity.Client/Microsoft.Identity.Client.csproj


Also See: 
https://docs.microsoft.com/en-us/dotnet/core/tools/project-json-to-csproj
and http://www.natemcmaster.com/blog/2017/03/09/vs2015-to-vs2017-upgrade/

---

You can also try creating a new solution in VS2017 with dotnet core project to 
get familiar with new csproj format. If you are not using VS2017 or VS Code, 
then dotnet-cli can give a quick sneak peak:

{code}
mkdir test && cd $_
dotnet new classlib -n mylib
dotnet new console -n myapp
dotnet add myapp.csproj reference mylib.csproj
# dotnet restore && dotnet run
{code}

Then see the structure of mylib.csproj and myapp.csproj.

---

Issues with new project system (which supports the new-csproj structure) can be 
reported at https://github.com/dotnet/project-system. Note that in that repo 
15.3 milestone is next in line which will bring new features and fix some 
existing complains: https://github.com/dotnet/project-system/milestone/7. 
However the current 15.2 version is working out fine for us in production.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to