About Hasmukh patel

My Photo
Harrow, London, United Kingdom
Dot-Net developer with expertise in Web, WPF, Win-form applications. Have worked on Asp.net,mvc , WPF and Win-forms projects in c#.net language having Sql-Server/Oracle as database with service oriented architecture using test driven development. Having complete knowledge of SDLC and have successfully worked and implemented it on projects.

Software licenses

List of open source which allows you to use, modify or share with or without restrictions.
Apache License
The Apache License is a permissive free software license written by the Apache Software Foundation. It allows users to use the software for any purpose, to distribute it, to modify it, and to distribute modified versions of the software under the terms of the license, without concern for royalties. Wikipedia

GNU Lesser General Public License - LGPL
The GNU Lesser General Public License is a free-software license published by the Free Software Foundation. Wikipedia

Mozilla Public License
The Mozilla Public License is a free and open source software license developed and maintained by the Mozilla Foundation. Wikipedia

BSD licenses
BSD licenses are a family of permissive free software licenses, imposing minimal restrictions on the use and distribution of covered software. This is in contrast to copyleft licenses, which have share-alike requirements. Wikipedia

MIT License
The MIT License is a permissive free software license originating at the Massachusetts Institute of Technology in the late 1980s. As a permissive license, it puts only very limited restriction on reuse and has, therefore, high license compatibility. It is compatible because it can be re-licensed under other licenses. Wikipedia

GNU General Public License
The GNU General Public License is a series of widely used free software licenses that guarantee end users the freedom to run, study, share, and modify the software. Wikipedia

Useful liks

Build Nuget Package with Dotnet core and New style VS2017 csproj

Create a new class library project using CLI


dotnet new classlib -o MyLibrary


<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>netstandard2.0</TargetFramework> </PropertyGroup> </Project>


Now add package details to build as a nuget package on project file


  <PropertyGroup>
    <TargetFramework>netstandard2.0;</TargetFramework>
    <PackageId>SampleLibrary</PackageId>
    <Version>0.1</Version>
    <Description>My SampleLibrary</Description>
    <Copyright>My Company</Copyright>
    <IsPackable>true</IsPackable>
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
    <PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
  </PropertyGroup>

IsPackable & GeneratePackageOnBuild are required to build as a .nupkg file.

If you want to Target Multiple Frameworks

change TargetFramework to TargetFrameworks and add ';' between frameworks

 <TargetFrameworks>netstandard2.0;net452;net48;</TargetFrameworks>


Add a project reference


<ItemGroup> <ProjectReference Include="..\ClassLibrary2\ClassLibrary2.csproj" /> </ItemGroup>


Include framework references

<ItemGroup> <!-- keep references unless they are to package files. See the section about the NuGet upgrade below. --> <Reference Include="System.Configuration" /> </ItemGroup>

Include file as a content

<ItemGroup> <Content Include="Js\JavaScript1.js" /> </ItemGroup>

Add a nuget package


<ItemGroup> <PackageReference Include="Newtonsoft.Json" Version="10.0.2" /> </ItemGroup>



Add pdb file into nupkg

Add the following line into the <PropertyGroup> element

<AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>

Compile project

At this stage, project with compile and you will see package file in
bin\Debug\SampleLibrary.0.1.0.nupkg folder, when open nupkg with an archive tool like Winzip,7Zip or Winrar,
ClassLibrary2 dll will not be included in the nupkg file.

To Fix this issue


Add the following line into the <PropertyGroup> element

<TargetsForTfmSpecificBuildOutput>$(TargetsForTfmSpecificBuildOutput);CopyProjectReferencesToPackage</TargetsForTfmSpecificBuildOutput>


Add new target between <project> tags


  <Target DependsOnTargets="ResolveReferences" Name="CopyProjectReferencesToPackage">

    <ItemGroup>

      <BuildOutputInPackage Include="@(ReferenceCopyLocalPaths->WithMetadataValue('ReferenceSourceTarget', 'ProjectReference'))"/>

    </ItemGroup>
  </Target>

Include extra files into build

<!-- the defaults -->
<Compile Include="**\*.cs" />
<EmbeddedResource Include="**\*.resx" />

include there lines into csproj file.
  <ItemGroup>
    <Content Include="**\*.js" />
  </ItemGroup>

Filly working  csproj file

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFrameworks>netstandard2.0;</TargetFrameworks>
    <PackageId>SampleLibrary</PackageId>
    <Version>0.1</Version>
    <Description>My SampleLibrary</Description>
    <Copyright>My Company</Copyright>
    <IsPackable>true</IsPackable>
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
    <PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
    <TargetsForTfmSpecificBuildOutput>$(TargetsForTfmSpecificBuildOutput);CopyProjectReferencesToPackage</TargetsForTfmSpecificBuildOutput>
    <AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>
  </PropertyGroup>

  <ItemGroup>
    <Content Include="**\*.js" />
  </ItemGroup>


  <ItemGroup>
    <PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
  </ItemGroup>
 
  <ItemGroup>
    <ProjectReference Include="..\ClassLibrary2\ClassLibrary2.csproj" />
  </ItemGroup>
 
  <ItemGroup>
    <Compile Update="Properties\Resources.Designer.cs">
      <DesignTime>True</DesignTime>
      <AutoGen>True</AutoGen>
      <DependentUpon>Resources.resx</DependentUpon>
    </Compile>
  </ItemGroup>
 
  <ItemGroup>
    <EmbeddedResource Update="Properties\Resources.resx">
      <Generator>ResXFileCodeGenerator</Generator>
      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
    </EmbeddedResource>
  </ItemGroup>
 
  <Target DependsOnTargets="ResolveReferences" Name="CopyProjectReferencesToPackage">
    <ItemGroup>
      <BuildOutputInPackage Include="@(ReferenceCopyLocalPaths-&gt;WithMetadataValue('ReferenceSourceTarget', 'ProjectReference'))" />
    </ItemGroup>
  </Target>

</Project>