Skip to content

Commit cd569c6

Browse files
committed
Project generator now generates the Signed csproj, and also target specific test projects.
That is needed because VS2017 cannot see tests in multitargeted projects.
1 parent b5e35a0 commit cd569c6

File tree

5 files changed

+144
-22
lines changed

5 files changed

+144
-22
lines changed

Lambda2Js.Tests/Lambda2Js.Tests.csproj

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFrameworks>net40;netcoreapp1.1</TargetFrameworks>
4+
<TargetFrameworks>net40;netcoreapp1.1;netcoreapp2.0</TargetFrameworks>
55
<EnableDefaultCompileItems>False</EnableDefaultCompileItems>
6+
<IsPackable>false</IsPackable>
67
</PropertyGroup>
78

89
<ItemGroup>
10+
<PackageReference Condition="'$(TargetFramework)'=='netcoreapp2.0'" Include="Microsoft.NET.Test.Sdk" Version="15.5.0" />
11+
<PackageReference Condition="'$(TargetFramework)'=='netcoreapp2.0'" Include="MSTest.TestAdapter" Version="1.2.0" />
12+
<PackageReference Condition="'$(TargetFramework)'=='netcoreapp2.0'" Include="MSTest.TestFramework" Version="1.2.0" />
913
<PackageReference Condition="'$(TargetFramework)'=='netcoreapp1.1'" Include="Microsoft.NET.Test.Sdk" Version="15.0.0" />
1014
<PackageReference Condition="'$(TargetFramework)'=='netcoreapp1.1'" Include="MSTest.TestAdapter" Version="1.1.11" />
1115
<PackageReference Condition="'$(TargetFramework)'=='netcoreapp1.1'" Include="MSTest.TestFramework" Version="1.1.11" />

Lambda2Js.sln

+42-11
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,23 @@ VisualStudioVersion = 15.0.27130.2003
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lambda2Js", "Lambda2Js\Lambda2Js.csproj", "{F7221282-1169-475B-BF81-E3EC2FF6A00A}"
77
EndProject
8-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lambda2Js.Tests", "Lambda2Js.Tests\Lambda2Js.Tests.csproj", "{728483B9-73EA-4EF6-94CC-22D1E5053A29}"
9-
EndProject
108
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test.NuGet.Net-v4.0", "Test.NuGet.Net-v4.0\Test.NuGet.Net-v4.0.csproj", "{73500DC0-3403-415C-9360-B82DCC78EFBE}"
119
EndProject
10+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lambda2Js.Signed", "Lambda2Js\Lambda2Js.Signed.csproj", "{C8843366-3DA1-4CF8-AD64-222872A43F20}"
11+
EndProject
1212
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test.Net-v4.0", "Test.Net-v4.0\Test.Net-v4.0.csproj", "{83500DC0-3403-415C-9360-B82DCC78EFBE}"
1313
EndProject
14-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lambda2Js.Signed", "Lambda2Js\Lambda2Js.Signed.csproj", "{C8843366-3DA1-4CF8-AD64-222872A43F20}"
14+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lambda2Js.Tests", "Lambda2Js.Tests\Lambda2Js.Tests.csproj", "{1D1C9D29-A2AF-40B1-9618-CBBEF21DDFB0}"
15+
EndProject
16+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ProjectsGenerator", "ProjectsGenerator\ProjectsGenerator.csproj", "{A04BA08D-66F3-450C-B8BF-60F0B99E0CC1}"
17+
EndProject
18+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lambda2Js.Tests.net40", "Lambda2Js.Tests\Lambda2Js.Tests.net40.csproj", "{5C0F0A1D-B7A9-4CC1-96A9-C71CCDF161B2}"
19+
EndProject
20+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lambda2Js.Tests.netcoreapp1.1", "Lambda2Js.Tests\Lambda2Js.Tests.netcoreapp1.1.csproj", "{865F6D50-1FB9-476A-9487-266851D061D6}"
21+
EndProject
22+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "TargetedTests", "TargetedTests", "{47DE47F5-E1D6-4C9F-B229-ED065E0A12BE}"
23+
EndProject
24+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lambda2Js.Tests.netcoreapp2.0", "Lambda2Js.Tests\Lambda2Js.Tests.netcoreapp2.0.csproj", "{243C57EE-F73D-458A-A45B-3A09BF6F35EB}"
1525
EndProject
1626
Global
1727
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -23,26 +33,47 @@ Global
2333
{F7221282-1169-475B-BF81-E3EC2FF6A00A}.Debug|Any CPU.Build.0 = Debug|Any CPU
2434
{F7221282-1169-475B-BF81-E3EC2FF6A00A}.Release|Any CPU.ActiveCfg = Release|Any CPU
2535
{F7221282-1169-475B-BF81-E3EC2FF6A00A}.Release|Any CPU.Build.0 = Release|Any CPU
26-
{728483B9-73EA-4EF6-94CC-22D1E5053A29}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
27-
{728483B9-73EA-4EF6-94CC-22D1E5053A29}.Debug|Any CPU.Build.0 = Debug|Any CPU
28-
{728483B9-73EA-4EF6-94CC-22D1E5053A29}.Release|Any CPU.ActiveCfg = Release|Any CPU
29-
{728483B9-73EA-4EF6-94CC-22D1E5053A29}.Release|Any CPU.Build.0 = Release|Any CPU
3036
{73500DC0-3403-415C-9360-B82DCC78EFBE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
3137
{73500DC0-3403-415C-9360-B82DCC78EFBE}.Debug|Any CPU.Build.0 = Debug|Any CPU
3238
{73500DC0-3403-415C-9360-B82DCC78EFBE}.Release|Any CPU.ActiveCfg = Release|Any CPU
3339
{73500DC0-3403-415C-9360-B82DCC78EFBE}.Release|Any CPU.Build.0 = Release|Any CPU
34-
{83500DC0-3403-415C-9360-B82DCC78EFBE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
35-
{83500DC0-3403-415C-9360-B82DCC78EFBE}.Debug|Any CPU.Build.0 = Debug|Any CPU
36-
{83500DC0-3403-415C-9360-B82DCC78EFBE}.Release|Any CPU.ActiveCfg = Release|Any CPU
37-
{83500DC0-3403-415C-9360-B82DCC78EFBE}.Release|Any CPU.Build.0 = Release|Any CPU
3840
{C8843366-3DA1-4CF8-AD64-222872A43F20}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
3941
{C8843366-3DA1-4CF8-AD64-222872A43F20}.Debug|Any CPU.Build.0 = Debug|Any CPU
4042
{C8843366-3DA1-4CF8-AD64-222872A43F20}.Release|Any CPU.ActiveCfg = Release|Any CPU
4143
{C8843366-3DA1-4CF8-AD64-222872A43F20}.Release|Any CPU.Build.0 = Release|Any CPU
44+
{83500DC0-3403-415C-9360-B82DCC78EFBE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
45+
{83500DC0-3403-415C-9360-B82DCC78EFBE}.Debug|Any CPU.Build.0 = Debug|Any CPU
46+
{83500DC0-3403-415C-9360-B82DCC78EFBE}.Release|Any CPU.ActiveCfg = Release|Any CPU
47+
{83500DC0-3403-415C-9360-B82DCC78EFBE}.Release|Any CPU.Build.0 = Release|Any CPU
48+
{1D1C9D29-A2AF-40B1-9618-CBBEF21DDFB0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
49+
{1D1C9D29-A2AF-40B1-9618-CBBEF21DDFB0}.Debug|Any CPU.Build.0 = Debug|Any CPU
50+
{1D1C9D29-A2AF-40B1-9618-CBBEF21DDFB0}.Release|Any CPU.ActiveCfg = Release|Any CPU
51+
{1D1C9D29-A2AF-40B1-9618-CBBEF21DDFB0}.Release|Any CPU.Build.0 = Release|Any CPU
52+
{A04BA08D-66F3-450C-B8BF-60F0B99E0CC1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
53+
{A04BA08D-66F3-450C-B8BF-60F0B99E0CC1}.Debug|Any CPU.Build.0 = Debug|Any CPU
54+
{A04BA08D-66F3-450C-B8BF-60F0B99E0CC1}.Release|Any CPU.ActiveCfg = Release|Any CPU
55+
{A04BA08D-66F3-450C-B8BF-60F0B99E0CC1}.Release|Any CPU.Build.0 = Release|Any CPU
56+
{5C0F0A1D-B7A9-4CC1-96A9-C71CCDF161B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
57+
{5C0F0A1D-B7A9-4CC1-96A9-C71CCDF161B2}.Debug|Any CPU.Build.0 = Debug|Any CPU
58+
{5C0F0A1D-B7A9-4CC1-96A9-C71CCDF161B2}.Release|Any CPU.ActiveCfg = Release|Any CPU
59+
{5C0F0A1D-B7A9-4CC1-96A9-C71CCDF161B2}.Release|Any CPU.Build.0 = Release|Any CPU
60+
{865F6D50-1FB9-476A-9487-266851D061D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
61+
{865F6D50-1FB9-476A-9487-266851D061D6}.Debug|Any CPU.Build.0 = Debug|Any CPU
62+
{865F6D50-1FB9-476A-9487-266851D061D6}.Release|Any CPU.ActiveCfg = Release|Any CPU
63+
{865F6D50-1FB9-476A-9487-266851D061D6}.Release|Any CPU.Build.0 = Release|Any CPU
64+
{243C57EE-F73D-458A-A45B-3A09BF6F35EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
65+
{243C57EE-F73D-458A-A45B-3A09BF6F35EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
66+
{243C57EE-F73D-458A-A45B-3A09BF6F35EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
67+
{243C57EE-F73D-458A-A45B-3A09BF6F35EB}.Release|Any CPU.Build.0 = Release|Any CPU
4268
EndGlobalSection
4369
GlobalSection(SolutionProperties) = preSolution
4470
HideSolutionNode = FALSE
4571
EndGlobalSection
72+
GlobalSection(NestedProjects) = preSolution
73+
{5C0F0A1D-B7A9-4CC1-96A9-C71CCDF161B2} = {47DE47F5-E1D6-4C9F-B229-ED065E0A12BE}
74+
{865F6D50-1FB9-476A-9487-266851D061D6} = {47DE47F5-E1D6-4C9F-B229-ED065E0A12BE}
75+
{243C57EE-F73D-458A-A45B-3A09BF6F35EB} = {47DE47F5-E1D6-4C9F-B229-ED065E0A12BE}
76+
EndGlobalSection
4677
GlobalSection(ExtensibilityGlobals) = postSolution
4778
SolutionGuid = {CBF11506-63A9-40BE-9454-6BFEC81550CA}
4879
EndGlobalSection

Lambda2Js/Lambda2Js.csproj

+8-10
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<!--TODO: support to portable40-net40+sl5+win8+wp8+wpa81-->
55
<TargetFrameworks>netstandard1.0;net40</TargetFrameworks>
66
<Title>lambda2js (ExpressionTree to JavaScript)</Title>
7-
<Version>3.0.1</Version>
7+
<Version>3.0.2</Version>
88
<Authors>Gearz, Miguel Angelo (masbicudo), André Pena (andrerpena)</Authors>
99
<Description>Package Portable lambda expression to JavaScript converter.
1010
Converts System.Linq.ExpressionTree to syntactically correct JavaScript code.
@@ -24,8 +24,7 @@ See the project page for more.</Description>
2424
<AssemblyVersion>1.0.0.0</AssemblyVersion>
2525
<FileVersion>1.0.0.0</FileVersion>
2626
<EnableDefaultCompileItems>False</EnableDefaultCompileItems>
27-
28-
27+
<PackageId>Lambda2Js</PackageId>
2928
</PropertyGroup>
3029

3130
<PropertyGroup>
@@ -36,18 +35,17 @@ See the project page for more.</Description>
3635
<DefineConstants Condition="'$(TargetFramework)'=='netstandard1.3'">NETSTANDARD1_3</DefineConstants>
3736
<DefineConstants Condition="$(TargetFramework.StartsWith('netstandard'))">NETSTANDARD</DefineConstants>
3837
<DefineConstants Condition="'$(TargetFramework)'=='net40'">NET40</DefineConstants>
39-
<PackageId>Lambda2Js</PackageId>
4038
</PropertyGroup>
4139

42-
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|netstandard1.0|AnyCPU'">
43-
<DocumentationFile>bin\Release\netstandard1.0\Lambda2Js.xml</DocumentationFile>
40+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
41+
<DocumentationFile>bin\Release\$(TargetFramework)\Lambda2Js.xml</DocumentationFile>
42+
<OutputPath>bin\Release\</OutputPath>
43+
</PropertyGroup>
4444

45+
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|netstandard1.0|AnyCPU'">
46+
<OutputPath>bin\Debug\</OutputPath>
4547
</PropertyGroup>
4648

47-
48-
49-
50-
5149
<ItemGroup>
5250
<Compile Include="**\*.cs" Exclude="obj\**;bin\**" />
5351
<Compile Condition="'$(TargetFramework)'!='net40'" Remove="**\*.net40.cs" />

ProjectsGenerator/Program.cs

+81
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
using System;
2+
using System.IO;
3+
using System.Xml;
4+
5+
namespace ProjectsGenerator
6+
{
7+
class Program
8+
{
9+
static void Main(string[] args)
10+
{
11+
Console.WriteLine($"Environment.CurrentDirectory = {Environment.CurrentDirectory}");
12+
13+
// TEST PROJECTS:
14+
//
15+
// Test projects are generated from the main multi-targeted test project:
16+
// "Lambda2Js.Tests.csproj" file.
17+
18+
{
19+
20+
var l2jsTests = new XmlDocument();
21+
l2jsTests.Load("../Lambda2Js.Tests/Lambda2Js.Tests.csproj");
22+
23+
var targetsElement = l2jsTests.SelectNodes("//TargetFrameworks");
24+
Console.WriteLine(targetsElement[0].InnerText);
25+
var targets = targetsElement[0].InnerText.Split(";");
26+
foreach (var target in targets)
27+
{
28+
if (File.Exists($"../Lambda2Js.Tests/Lambda2Js.Tests.{target}.csproj"))
29+
continue;
30+
31+
var l2jsTestNew = (XmlDocument)l2jsTests.Clone();
32+
var node = l2jsTestNew.SelectSingleNode("//TargetFrameworks");
33+
var targetElement = l2jsTestNew.CreateElement("TargetFramework");
34+
targetElement.InnerText = target;
35+
node.ParentNode.ReplaceChild(targetElement, node);
36+
l2jsTestNew.Save($"../Lambda2Js.Tests/Lambda2Js.Tests.{target}.csproj");
37+
}
38+
39+
}
40+
41+
// SIGNED ASSEMBLY
42+
//
43+
// Signed assembly is generated from the main "Lambda2Js.csproj" file.
44+
45+
{
46+
47+
var l2js = new XmlDocument();
48+
l2js.Load("../Lambda2Js/Lambda2Js.csproj");
49+
50+
var sig = (XmlDocument)l2js.Clone();
51+
var sigMain = sig.SelectSingleNode("//TargetFrameworks").ParentNode;
52+
var ver = sigMain.SelectSingleNode("Version").InnerText;
53+
54+
sigMain.SelectSingleNode("AssemblyVersion").InnerText = $"{ver}.0";
55+
sigMain.SelectSingleNode("FileVersion").InnerText = $"{ver}.0";
56+
sigMain.SelectSingleNode("PackageId").InnerText = "Lambda2Js.Signed";
57+
sigMain.AppendChild(sig.CreateElement("SignAssembly").With(x => x.InnerText = "true"));
58+
sigMain.AppendChild(sig.CreateElement("AssemblyOriginatorKeyFile").With(x => x.InnerText = @"..\Lambda2Js.snk"));
59+
sigMain.AppendChild(sig.CreateElement("RootNamespace").With(x => x.InnerText = "Lambda2Js"));
60+
sigMain.AppendChild(sig.CreateElement("AssemblyName").With(x => x.InnerText = "Lambda2Js.Signed"));
61+
62+
foreach (XmlNode doc in sig.SelectNodes("DocumentationFile"))
63+
doc.InnerText = doc.InnerText.Replace("Lambda2Js.xml", "Lambda2Js.Signed.xml");
64+
65+
sig.Save($"../Lambda2Js/Lambda2Js.Signed.csproj");
66+
67+
}
68+
69+
Console.WriteLine("Hello World!");
70+
Console.ReadKey();
71+
}
72+
}
73+
static class ObjectExtensions
74+
{
75+
public static T With<T>(this T obj, Action<T> action)
76+
{
77+
action(obj);
78+
return obj;
79+
}
80+
}
81+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<OutputType>Exe</OutputType>
5+
<TargetFramework>netcoreapp2.0</TargetFramework>
6+
</PropertyGroup>
7+
8+
</Project>

0 commit comments

Comments
 (0)