Skip to content

Commit

Permalink
Dev remove roslyn nupkg ref (#30)
Browse files Browse the repository at this point in the history
* remove roslyn nupkg ref

* Set default value for RoslynToolPath only when it's not set
  • Loading branch information
Jinhuafei authored and HongGit committed Jan 23, 2018
1 parent 9408cd2 commit a23b559
Show file tree
Hide file tree
Showing 12 changed files with 135 additions and 47 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Expand Up @@ -12,4 +12,5 @@ PublishProfiles/
.vs
.build/
.testPublish/
msbuild.*
msbuild.*
src/**/tools/Roslyn*/
Expand Up @@ -29,9 +29,24 @@
<NuGetContent Include="build\*">
<Destination>build\net45</Destination>
</NuGetContent>
<NuGetContent Include="build\*">
<Destination>build\net46</Destination>
</NuGetContent>
<NuGetContent Include="build\net45\*">
<Destination>build\net45</Destination>
</NuGetContent>
<NuGetContent Include="build\net46\*">
<Destination>build\net46</Destination>
</NuGetContent>
<NuGetContent Include="tools\*.ps1">
<Destination>tools\net45</Destination>
</NuGetContent>
<NuGetContent Include="tools\$(LocalRoslynFolderName)\*">
<Destination>tools\$(LocalRoslynFolderName)</Destination>
</NuGetContent>
<NuGetContent Include="tools\$(LocalLatestRoslynFolderName)\*">
<Destination>tools\$(LocalLatestRoslynFolderName)</Destination>
</NuGetContent>
</ItemGroup>
<Import Project="$(RepositoryRoot)Tools\NuGetProj.targets"/>
</Project>
Expand Up @@ -14,13 +14,5 @@
<licenseUrl>http://www.microsoft.com/web/webpi/eula/net_library_eula_ENU.htm</licenseUrl>
<requireLicenseAcceptance>true</requireLicenseAcceptance>
<tags>Roslyn CodeDOM Compiler CSharp VB.Net ASP.NET</tags>
<dependencies>
<group targetFramework=".NETFramework4.5">
<dependency id="Microsoft.Net.Compilers" version="$MSNetCompilersNuGetPackageVersion$" />
</group>
<group targetFramework=".NETFramework4.6">
<dependency id="Microsoft.Net.Compilers" version="$MSNetCompilersNuGetPackageLatestVersion$" />
</group>
</dependencies>
</metadata>
</package>
@@ -1,6 +1,8 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.Extensions.props"/>

<ItemGroup>
<RoslyCompilerFiles Include="$(CscToolPath)\*">
<RoslyCompilerFiles Include="$(RoslynToolPath)\*">
<Link>roslyn\%(RecursiveDir)%(Filename)%(Extension)</Link>
</RoslyCompilerFiles>
</ItemGroup>
Expand Down
@@ -0,0 +1,5 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<RoslynToolPath Condition=" '$(RoslynToolPath)' == '' ">$(MSBuildThisFileDirectory)..\..\tools\roslyn45</RoslynToolPath>
</PropertyGroup>
</Project>
@@ -0,0 +1,5 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<RoslynToolPath Condition=" '$(RoslynToolPath)' == '' ">$(MSBuildThisFileDirectory)..\..\tools\roslynlatest</RoslynToolPath>
</PropertyGroup>
</Project>
Expand Up @@ -26,7 +26,7 @@
<compiler
language="c#;cs;csharp"
extension=".cs"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.8.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.9.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel="4"
compilerOptions="/langversion:6 /nowarn:1659;1699;1701"
xdt:Transform="Insert" />
Expand All @@ -49,7 +49,7 @@
<compiler
language="vb;vbs;visualbasic;vbscript"
extension=".vb"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.8.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.9.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel="4"
compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+"
xdt:Transform="Insert" />
Expand Down
Expand Up @@ -26,7 +26,7 @@
<compiler
language="c#;cs;csharp"
extension=".cs"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.8.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.9.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel="4"
compilerOptions="/langversion:default /nowarn:1659;1699;1701"
xdt:Transform="Insert" />
Expand All @@ -49,7 +49,7 @@
<compiler
language="vb;vbs;visualbasic;vbscript"
extension=".vb"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.8.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.9.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel="4"
compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+"
xdt:Transform="Insert" />
Expand Down
Expand Up @@ -3,7 +3,6 @@

param($installPath, $toolsPath, $package, $project)

$compilerPackageName = 'Microsoft.Net.Compilers'
$roslynSubFolder = 'roslyn'

if ($project -eq $null) {
Expand All @@ -12,6 +11,8 @@ if ($project -eq $null) {

$libDirectory = Join-Path $installPath 'lib\net45'
$projectRoot = $project.Properties.Item('FullPath').Value
$projectTargetFramework = $project.Properties.Item('TargetFrameworkMoniker').Value
$shouldUseRoslyn45 = $projectTargetFramework -match '4.5'
$binDirectory = Join-Path $projectRoot 'bin'

# We need to copy the provider assembly into the bin\ folder, otherwise
Expand All @@ -26,25 +27,16 @@ Copy-Item $libDirectory\* $binDirectory -force | Out-Null
if ($project.Type -eq 'Web Site') {
$packageDirectory = Split-Path $installPath

# Get the installed Microsoft.Net.Compilers package.
$compilerPackage = Get-Package -ProjectName $project.Name | Where-Object {$_.Id -eq $compilerPackageName}
if ($compilerPackage -eq $null)
if($package.Versions -eq $null)
{
Write-Host "Package $compilerPackageName is not installed correctly."
Write-Host 'The install.ps1 did not complete.'
break
}

if($compilerPackage.Versions -eq $null)
{
$compilerVersion = $compilerPackage.Version
$compilerVersion = $package.Version
}
else
{
$compilerVersion = @($compilerPackage.Versions)[0]
$compilerVersion = @($package.Versions)[0]
}

$compilerPackageFolderName = $compilerPackage.Id + "." + $compilerVersion
$compilerPackageFolderName = $package.Id + "." + $compilerVersion
$compilerPackageDirectory = Join-Path $packageDirectory $compilerPackageFolderName
if ((Get-Item $compilerPackageDirectory) -isnot [System.IO.DirectoryInfo])
{
Expand All @@ -53,7 +45,14 @@ if ($project.Type -eq 'Web Site') {
break
}

$compilerPackageToolsDirectory = Join-Path $compilerPackageDirectory 'tools'
if($shouldUseRoslyn45)
{
$compilerPackageToolsDirectory = Join-Path $compilerPackageDirectory 'tools\roslyn45'
}
else
{
$compilerPackageToolsDirectory = Join-Path $compilerPackageDirectory 'tools\roslynlatest'
}
$roslynSubDirectory = Join-Path $binDirectory $roslynSubFolder
New-Item $roslynSubDirectory -type directory -force | Out-Null
Copy-Item $compilerPackageToolsDirectory\* $roslynSubDirectory -force | Out-Null
Expand Down
92 changes: 78 additions & 14 deletions tools/RoslynCodeProvider.Extensions.targets
@@ -1,18 +1,82 @@
<Project DefaultTargets="UnitTest" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

<!-- Update NuGet Package version for nightly build-->
<PropertyGroup Condition="'$(MSBuildProjectExtension)' == '.nuproj'">
<NuGetPackageVersion Condition="'$(UpdateNightlyPackages)' == 'true'">$(NuGetPackageVersion)-b$(VersionBuild)</NuGetPackageVersion>
<PropertyGroup>
<NupkgToolPath>$(RepositoryRoot)src\Packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform\tools\</NupkgToolPath>
<LocalRoslynFolderName>Roslyn45</LocalRoslynFolderName>
<LocalLatestRoslynFolderName>RoslynLatest</LocalLatestRoslynFolderName>
</PropertyGroup>

<ItemGroup>
<NuGetInstallScripts Include="$(RepositoryRootEx)src\Packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform\tools\*.ps1"/>
</ItemGroup>

<Target Name="CopyInstallScripts">
<Copy SourceFiles="@(NuGetInstallScripts)"
DestinationFolder="$(AssemblyPath)"
/>
</Target>

<UsingTask TaskName="DownloadRoslynBinaries" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
<ParameterGroup>
<NupkgToolPath ParameterType="System.String" Required="true" />
<LocalRoslynFolderName ParameterType="System.String" Required="true" />
<LocalLatestRoslynFolderName ParameterType="System.String" Required="true" />
<ReferenceRoslynNupkgVersion ParameterType="System.String" Required="true" />
<ReferenceLatestRoslynNupkgVersion ParameterType="System.String" Required="true" />
</ParameterGroup>
<Task>
<Reference Include="System" />
<Reference Include="System.IO.Compression.FileSystem" />
<Using Namespace="System.IO" />
<Using Namespace="System.IO.Compression" />
<Using Namespace="System.Net" />
<Code Type="Fragment" Language="cs">
<![CDATA[
try
{
using (var wc = new WebClient())
{
var roslynNugetBaseUri = "https://api.nuget.org/packages/microsoft.net.compilers.{0}.nupkg";
var roslynPackageName = "microsoft.net.compilers.{0}.nupkg";
var targetFilePath = Path.Combine(Path.GetTempPath(), string.Format(roslynPackageName, ReferenceRoslynNupkgVersion));
var targetExtractPath = Path.Combine(Path.GetTempPath(), LocalRoslynFolderName);
var targetPath = Path.Combine(NupkgToolPath, LocalRoslynFolderName);
if (Directory.Exists(targetExtractPath))
{
Directory.Delete(targetExtractPath, true);
}
if (Directory.Exists(targetPath))
{
Directory.Delete(targetPath, true);
}
wc.DownloadFile(string.Format(roslynNugetBaseUri, ReferenceRoslynNupkgVersion), targetFilePath);
ZipFile.ExtractToDirectory(targetFilePath, targetExtractPath);
Directory.CreateDirectory(targetPath);
foreach(var file in Directory.GetFiles(Path.Combine(targetExtractPath, "tools"))){
var fi = new FileInfo(file);
File.Copy(file, Path.Combine(targetPath, fi.Name));
}
targetFilePath = Path.Combine(Path.GetTempPath(), string.Format(roslynPackageName, ReferenceLatestRoslynNupkgVersion));
targetExtractPath = Path.Combine(Path.GetTempPath(), LocalLatestRoslynFolderName);
targetPath = Path.Combine(NupkgToolPath, LocalLatestRoslynFolderName);
if (Directory.Exists(targetExtractPath))
{
Directory.Delete(targetExtractPath, true);
}
if (Directory.Exists(targetPath))
{
Directory.Delete(targetPath, true);
}
wc.DownloadFile(string.Format(roslynNugetBaseUri, ReferenceLatestRoslynNupkgVersion), targetFilePath);
ZipFile.ExtractToDirectory(targetFilePath, targetExtractPath);
Directory.CreateDirectory(targetPath);
foreach (var file in Directory.GetFiles(Path.Combine(targetExtractPath, "tools")))
{
var fi = new FileInfo(file);
File.Copy(file, Path.Combine(targetPath, fi.Name));
}
}
}
catch (Exception ex)
{
Log.LogErrorFromException(ex);
}
return true;
]]>
</Code>
</Task>
</UsingTask>
</Project>
3 changes: 2 additions & 1 deletion tools/RoslynCodeProvider.settings.targets
@@ -1,12 +1,13 @@
<Project DefaultTargets="UnitTest" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

<!-- Configurable properties-->

<PropertyGroup>
<BuildQuality Condition="'$(BuildQuality)' == ''">rtm</BuildQuality>
<VersionStartYear>2014</VersionStartYear>
<VersionMajor>1</VersionMajor>
<VersionMinor>0</VersionMinor>
<VersionRelease>8</VersionRelease>
<VersionRelease>9</VersionRelease>
<VersionRelease Condition="'$(BuildQuality)' != 'rtm'">$(VersionRelease)-$(BuildQuality)</VersionRelease>
</PropertyGroup>

Expand Down
10 changes: 7 additions & 3 deletions tools/RoslynCodeProvider.targets
Expand Up @@ -2,10 +2,11 @@

<!-- Build order -->
<PropertyGroup>
<BuildDependsOn>SetNuSpecProperties;$(BuildDependsOn)</BuildDependsOn>
<BuildDependsOn>SetNuSpecProperties;DownloadRoslynBinariesToToolsFolder;$(BuildDependsOn)</BuildDependsOn>
</PropertyGroup>

<Import Project="$(MSBuildThisFileDirectory)version.targets"/>
<Import Project="$(MSBuildThisFileDirectory)RoslynCodeProvider.Extensions.targets"/>

<!-- Post-targets computed properties. -->

Expand All @@ -22,9 +23,12 @@
<NuSpecProperties>
NuGetPackageVersion=$(NuGetPackageVersion);
NuGetPackageId=$(NuGetPackageId);
MSNetCompilersNuGetPackageVersion=$(MSNetCompilersNuGetPackageVersion);
MSNetCompilersNuGetPackageLatestVersion=$(MSNetCompilersNuGetPackageLatestVersion)
</NuSpecProperties>
</PropertyGroup>
</Target>

<Target Name="DownloadRoslynBinariesToToolsFolder">
<DownloadRoslynBinaries NupkgToolPath="$(NupkgToolPath)" LocalRoslynFolderName="$(LocalRoslynFolderName)" LocalLatestRoslynFolderName="$(LocalLatestRoslynFolderName)"
ReferenceRoslynNupkgVersion="$(MSNetCompilersNuGetPackageVersion)" ReferenceLatestRoslynNupkgVersion="$(MSNetCompilersNuGetPackageLatestVersion)" />
</Target>
</Project>

0 comments on commit a23b559

Please sign in to comment.