Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
143 commits
Select commit Hold shift + click to select a range
5da3cc2
Copy all external linked files into MSBuildTaskHost
DustinCampbell Feb 2, 2026
b75f9a9
Separate $(DefineConstants) properties for net3* and net4*
DustinCampbell Feb 2, 2026
92d573b
MSBuildTaskHost: Move all polyfills to Polyfills folder
DustinCampbell Feb 2, 2026
04e8cd3
MSBuildTaskHost: Delete Polyfills\StringSyntaxAttribute.cs
DustinCampbell Feb 2, 2026
66effaf
MSBuildTaskHost: Remove FEATURE_LEGACY_GETCURRENTDIRECTORY
DustinCampbell Feb 2, 2026
acd2a60
MSBuildTaskHost: Remove FEATURE_LEGACY_GETFULLPATH
DustinCampbell Feb 2, 2026
423b462
MSBuildTaskHost: Remove FEATURE_ASSEMBLY_LOCATION
DustinCampbell Feb 2, 2026
1f14ea2
MSBuildTaskHost: Remove FEATURE_CULTUREINFO_GETCULTURES
DustinCampbell Feb 2, 2026
a705a93
MSBuildTaskHost: Remove FEATURE_APM
DustinCampbell Feb 2, 2026
8dd5bde
Remove FEATURE_* constants from .NET 3.5 builds unused by MSBuildTask…
DustinCampbell Feb 2, 2026
de8dfaf
MSBuildTaskHost: Remove FEATURE_PIPE_SECURITY and related constant
DustinCampbell Feb 2, 2026
2ce4a7b
MSBuildTaskHost: Remove FEATURE_SECURITY_PERMISSIONS
DustinCampbell Feb 2, 2026
d1ae88e
MSBuildTaskHost: Remove FEATURE_SECURITY_PRINCIPAL_WINDOWS
DustinCampbell Feb 2, 2026
b50526d
MSBuildTaskHost: Remove FEATURE_THREAD_ABORT
DustinCampbell Feb 2, 2026
b3a3380
MSBuildTaskHost: Remove FEATURE_VISUALSTUDIOSETUP
DustinCampbell Feb 2, 2026
7744be1
Remove Feature* properties from .NET 3.5 builds
DustinCampbell Feb 2, 2026
d61cf7c
MSBuildTaskHost: Remove FEATURE_REPORTFILEACCESSES
DustinCampbell Feb 2, 2026
aeb3e74
MSBuildTaskHost: Remove AppContext support from BuildEnvironmentHelper
DustinCampbell Feb 2, 2026
08b7d0c
MSBuildTaskHost: Remove VS Setup API from BuildEnviromentHelper
DustinCampbell Feb 2, 2026
228ec37
MSBuildTaskHost: Remove RUNTIME_TYPE_NETCORE code paths
DustinCampbell Feb 2, 2026
39ed041
MSBuildTaskHost: Remove a few unused types
DustinCampbell Feb 2, 2026
ecc03a3
MSBuildTaskHost: Remove NET35 disabled code blocks
DustinCampbell Feb 2, 2026
dd9c8a1
MSBuildTaskHost: Remove NET* disabled code blocks
DustinCampbell Feb 2, 2026
3a4dc40
MSBuildTaskHost: Remove BUILDINGAPPXTASKS code blocks
DustinCampbell Feb 2, 2026
d6e9d35
MSBuildTaskHost: Remove CLR2COMPATIBILITY disabled code blocks
DustinCampbell Feb 2, 2026
629bbbb
MSBuildTaskHost: Remove TASKHOST disabled code blocks
DustinCampbell Feb 2, 2026
fc3acde
MSBuildTaskHost: Remove FEATURE_ASSEMBLYLOADCONTEXT
DustinCampbell Feb 2, 2026
c89a8f4
MSBuildTaskHost: Remove FEATURE_PIPEOPTIONS_CURRENTUSERONLY
DustinCampbell Feb 2, 2026
652e1b0
MSBuildTaskHost: Remove FEATURE_NET35_TASKHOST
DustinCampbell Feb 2, 2026
f742101
MSBuildTaskHost: Remove NO_FRAMEWORK_IVT
DustinCampbell Feb 2, 2026
c13ff0f
MSBuildTaskHost: Remove FEATURE_APPDOMAIN
DustinCampbell Feb 2, 2026
73e68d4
MSBuildTaskHost: Remove OS runtime checks
DustinCampbell Feb 2, 2026
6db1744
MSBuildTaskHost: Remove uncalled members from FileUtilities.cs
DustinCampbell Feb 2, 2026
9a58fc9
MSBuildTaskHost: Reduce accessibility of FileUtilities.cs members
DustinCampbell Feb 2, 2026
422f462
MSBuildTaskHost: Merge FrameworkFileUtilities into FileUtilities
DustinCampbell Feb 2, 2026
aa924a0
MSBuildTaskHost: Remove uncalled members from XMakeAttributes.cs
DustinCampbell Feb 2, 2026
5b3f141
MSBuildTaskHost: Remove uncalled members from TypeLoader.cs
DustinCampbell Feb 2, 2026
8e9421a
MSBuildTaskHost: Remove NamedPipeUtil.cs
DustinCampbell Feb 2, 2026
1016f24
MSBuildTaskHost: Remove IBuildEngine3.cs and BuildEngineResult.cs
DustinCampbell Feb 2, 2026
76b9ef7
MSBuildTaskHost: Remove IExtendedBuildEventArgs
DustinCampbell Feb 2, 2026
e99fe71
MSBuildTaskHost: Remove SerializableMetadata.cs
DustinCampbell Feb 2, 2026
a679727
MSBuildTaskHost: Remove ImmutableDictionary
DustinCampbell Feb 2, 2026
3be3358
MSBuildTaskHost: Remove uncalled members from EnvironmentUtilities.cs
DustinCampbell Feb 2, 2026
98b305f
MSBuildTaskHost: Remove uncalled members from CollectionHelpers.cs
DustinCampbell Feb 2, 2026
a6aa438
MSBuildTaskHost: Remove Constants.cs
DustinCampbell Feb 2, 2026
a0f9fb8
MSBuildTaskHost: Remove uncalled members from ExceptionHandling.cs
DustinCampbell Feb 2, 2026
1694bde
MSBuildTaskHost: Remove uncalled members from ErrorUtilities.cs
DustinCampbell Feb 2, 2026
1cd4cc0
MSBuildTaskHost: Remove AssemblyUtilities.cs
DustinCampbell Feb 2, 2026
f93b9e0
MSBuildTaskHost: Remove uncalled members in NativeMethods.cs
DustinCampbell Feb 2, 2026
9cb0e1e
MSBuildTaskHost: Remove MSBuildNameIgnoringCaseComparer
DustinCampbell Feb 2, 2026
b3f7c25
MSBuildTaskHost: Replace ProcessorArchitectures with simple Is64Bit test
DustinCampbell Feb 2, 2026
3f8adee
MSBuildTaskHost: Remove XMakeAttributes.cs
DustinCampbell Feb 2, 2026
fe09045
MSBuildTaskHost: Trim unnecessary code out of BuildEnvironmentHelper.cs
DustinCampbell Feb 2, 2026
e86369b
MSBuildTaskHost: Remove more uncalled members from FileUtilities.cs
DustinCampbell Feb 2, 2026
8866a4c
MSBuildTaskHost: Use NetFx implementation of Path.Combine
DustinCampbell Feb 3, 2026
b5b7d54
MSBuildTaskHost: Remove uncalled members in Traits.cs
DustinCampbell Feb 3, 2026
0879e78
MSBuildTaskHost: Remove ChangeWaves
DustinCampbell Feb 3, 2026
5b7410a
MSBuildTaskHost: Remove BuildEnvironmentState
DustinCampbell Feb 3, 2026
dcb8aca
MSBuildTaskHost: Remove SupportOSPlatform attributes
DustinCampbell Feb 3, 2026
3250907
MSBuildTaskHost: Remove uncalled members in ResourceUtilities
DustinCampbell Feb 3, 2026
86fd3c4
MSBuildTaskHost: Remove ITaskItem2
DustinCampbell Feb 3, 2026
586c2c1
MSBuildTaskHost: Remove uncalled members from TaskParameterTaskItem
DustinCampbell Feb 3, 2026
20af332
MSBuildTaskHost: Remove TaskEngineAssemblyResolver
DustinCampbell Feb 3, 2026
cc7731f
MSBuildTaskHost: Remove AssemblyNameExtension and AssemblyNameComparer
DustinCampbell Feb 3, 2026
92f15fc
MSBuildTaskHost: Remove IFileSystem and related types
DustinCampbell Feb 3, 2026
c635ab6
MSBuildTaskHost: Remove AnsiDetector
DustinCampbell Feb 3, 2026
8fd687b
MSBuildTaskHost: Remove uncalled members from TranslationHelpers
DustinCampbell Feb 3, 2026
6bd8400
MSBuildTaskHost: Remove BinaryTranslator interning support
DustinCampbell Feb 3, 2026
407b75d
MSBuildTaskHost: Remove uncalled members from ITranslater
DustinCampbell Feb 3, 2026
65ff4fe
MSBuildTaskHost: Remove uncalled members from OutOfProcTaskHostNode
DustinCampbell Feb 3, 2026
d0e24c7
MSBuildTaskHost: Remove FrameworkErrorUtilities
DustinCampbell Feb 3, 2026
f6211c6
MSBuildTaskHost: Remove ResponseFileUsedEventArgs
DustinCampbell Feb 3, 2026
80650a0
MSBuildTaskHost: Simplify HandshakeOptions
DustinCampbell Feb 3, 2026
6875837
MSBuildTaskHost: Remove TaskHostParameters
DustinCampbell Feb 3, 2026
63278ab
MSBuildTaskHost: Merge NodeEndpointOutOfProcTaskHost
DustinCampbell Feb 3, 2026
e49bde6
MSBuildTaskHost: Merge OutOfProcTaskAppDomainWrapper
DustinCampbell Feb 3, 2026
7b01e69
MSBuildTaskHost: Remove OutOfProcTaskAppDomainWrapper.CancelTask
DustinCampbell Feb 3, 2026
4e930e2
MSBuildTaskHost: Remove MSBuildArchitecture and MSBuildRuntime
DustinCampbell Feb 3, 2026
bbdfdb1
MSBuildTaskHost: Don't use AssemblyLoadInfo
DustinCampbell Feb 4, 2026
848d79b
MSBuildTaskHost: Remove AssemblyLoadInfo
DustinCampbell Feb 4, 2026
ffa96f4
MSBuildTaskHost: Remove unused members and parameters from LoadedType
DustinCampbell Feb 4, 2026
fe8e104
MSBuildTaskHost: Remove RunInSTAAttribute
DustinCampbell Feb 4, 2026
b2062ac
MSBuildTaskHost: Remove HasSTAThreadAttribute & FEATURE_APARTMENT_STATE
DustinCampbell Feb 4, 2026
1a4be5f
MSBuildTaskHost: Clean up OutOfProcTaskAppDomainWrapper and *TaskResult
DustinCampbell Feb 4, 2026
c2cdf0b
MSBuildTaskHost: Remove BuildEnviromentHelper.TryFromVisualStudioProcess
DustinCampbell Feb 4, 2026
d868eba
MSBuildTaskHost: Avoid BuildEnvironmentHelper in OutOfProcTaskHostNode
DustinCampbell Feb 4, 2026
0d8a66f
MSBuildTaskHost: Remove uncalled members from CommunicationUtilities
DustinCampbell Feb 4, 2026
53b7826
Adjust Handshake salt calculation for MSBuildTaskHost
DustinCampbell Feb 4, 2026
471568c
MSBuildTaskHost: Remove BuildEnvironmentHelper
DustinCampbell Feb 4, 2026
2821ed7
MSBuildTaskHost: Remove uncalled members from FileUtilities
DustinCampbell Feb 4, 2026
b9a2e30
MSBuildTaskHost: Reorganize files and namespaces
DustinCampbell Feb 4, 2026
0fdc494
MSBuildTaskHost: Clean up and fix exception serialization
DustinCampbell Feb 5, 2026
32146e9
MSBuildTaskHost: Enable default items in project file
DustinCampbell Feb 5, 2026
3a92cf3
MSBuildTaskHost: Rework and prune string resources
DustinCampbell Feb 5, 2026
c4aa56d
MSBuildTaskHost: Clean up BinaryReader/WriterExtensions
DustinCampbell Feb 5, 2026
2a97a76
MSBuildTaskHost: Clean up BinaryTranslater, ITranslater, and *Helpers
DustinCampbell Feb 5, 2026
f07f4ce
MSBuildTaskHost: Clean up BufferedReadStream
DustinCampbell Feb 5, 2026
34fa5a7
MSBuildTaskHost: Clean up INode* interfaces and related types
DustinCampbell Feb 5, 2026
b367f7c
MSBuildTaskHost: Clean up InterningBinaryReader
DustinCampbell Feb 5, 2026
1189909
MSBuildTaskHost: Clean up LogMessagePacketBase and fix bug
DustinCampbell Feb 5, 2026
5a337fd
MSBuildTaskHost: Clean up NodeBuildComplete
DustinCampbell Feb 5, 2026
bff8b3c
MSBuildTaskHost: Clean up NodeEngineShutdownReason
DustinCampbell Feb 5, 2026
ea0e75a
MSBuildTaskHost: Clean up NodeShutdown
DustinCampbell Feb 5, 2026
52f148b
MSBuildTaskHost: Clean up TaskHostConfiguration
DustinCampbell Feb 5, 2026
5487183
MSBuildTaskHost: Clean up TaskHostTaskCancelled
DustinCampbell Feb 5, 2026
0db87d4
MSBuildTaskHost: Clean up TaskHostTaskComplete
DustinCampbell Feb 5, 2026
3a3db6d
MSBuildTaskHost: Clean up TaskParameter
DustinCampbell Feb 5, 2026
f64ad9d
MSBuildTaskHost: Clean up TaskParameterTypeVerifier
DustinCampbell Feb 5, 2026
7cfbb7d
MSBuildTaskHost: Clean up NodePacketFactory
DustinCampbell Feb 5, 2026
e2d0b7f
MSBuildTaskHost: Clean up ITranslatable
DustinCampbell Feb 5, 2026
6686d21
MSBuildTaskHost: Clean up NodeEndpointOutOfProcTaskHost
DustinCampbell Feb 6, 2026
98c1053
MSBuildTaskHost: Clean up CollectionHelpers
DustinCampbell Feb 6, 2026
ca756e3
MSBuildTaskHost: Clean up ConcurrentDictionary
DustinCampbell Feb 6, 2026
4f48280
MSBuildTaskHost: Clean up ConcurrentQueue
DustinCampbell Feb 6, 2026
ae8b9ae
MSBuildTaskHost: Clean up InternalErrorException
DustinCampbell Feb 6, 2026
ae0c6b1
MSBuildTaskHost: Clean up EnvironmentUtilities
DustinCampbell Feb 6, 2026
970cef6
MSBuildTaskHost: Clean up ErrorUtilities
DustinCampbell Feb 6, 2026
61b2259
MSBuildTaskHost: Clean up EscapingUtilities
DustinCampbell Feb 6, 2026
4b8def8
MSBuildTaskHost: Clean up ExceptionHandling
DustinCampbell Feb 6, 2026
15970ea
MSBuildTaskHost: Clean up FileUtilities
DustinCampbell Feb 6, 2026
daf60cd
MSBuildTaskHost: Merge FileUtilitiesRegex into FileUtilities
DustinCampbell Feb 6, 2026
bf875be
MSBuildTaskHost: Clean up Modifiers and NativeMethods
DustinCampbell Feb 6, 2026
c8c6b4b
MSBuildTaskHost: Clean up StringBuilderCache
DustinCampbell Feb 7, 2026
2ff2b90
MSBuildTaskHost: Clean up CommunicationUtilities
DustinCampbell Feb 9, 2026
d81c65f
MSBuildTaskHost: Clean up LoadedType
DustinCampbell Feb 9, 2026
a6c1e0a
MSBuildTaskHost: Clean up OutOfProcTaskHost
DustinCampbell Feb 9, 2026
dceb52c
MSBuildTaskHost: Clean up OutOfProcTaskHostNode
DustinCampbell Feb 9, 2026
e9d0198
MSBuildTaskHost: Clean up TaskLoader
DustinCampbell Feb 9, 2026
e110c06
MSBuildTaskHost: Clean up Traits
DustinCampbell Feb 9, 2026
e6812e5
MSBuildTaskHost: Clean up TypeLoader
DustinCampbell Feb 9, 2026
b0c015f
Add test that builds .NET Framework 3.5 WinForms project
DustinCampbell Feb 9, 2026
db64459
Apply Copilot CR feedback
DustinCampbell Feb 10, 2026
57622aa
Set <AppConfig> in Microsoft.Build.Engine.UnitTests.csproj
DustinCampbell Feb 10, 2026
069a045
Ensure .NET 3.5 test only runs on valid bootstrap layout
DustinCampbell Feb 10, 2026
e63c636
Merge branch 'main' into isolate-taskhost
DustinCampbell Feb 12, 2026
749460b
Merge branch 'main' into isolate-taskhost
DustinCampbell Feb 13, 2026
00764c8
Merge branch 'main' into isolate-taskhost
DustinCampbell Feb 18, 2026
27c5e9d
Merge branch 'main' into isolate-taskhost
DustinCampbell Feb 20, 2026
46709a5
Fix issue with MSBuildTaskHost handshake salt produced by client
DustinCampbell Feb 20, 2026
65650b7
Merge branch 'main' into isolate-taskhost
DustinCampbell Feb 23, 2026
2d288f4
Merge branch 'main' into isolate-taskhost
DustinCampbell Feb 25, 2026
b6073e3
Merge branch 'main' into isolate-taskhost
DustinCampbell Feb 27, 2026
ea52031
Change TaskHostLaunchArgs to more closely match NodeLaunchData
DustinCampbell Feb 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 55 additions & 0 deletions src/Build.UnitTests/MSBuildTaskHostTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

using System;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using Microsoft.Build.UnitTests;
using Microsoft.Build.UnitTests.Shared;
using Shouldly;
using Xunit;
using Xunit.Abstractions;

namespace Microsoft.Build.Engine.UnitTests;

public class MSBuildTaskHostTests(ITestOutputHelper testOutput) : IDisposable
{
private static string AssemblyLocation
=> field ??= Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? AppContext.BaseDirectory);

private static string TestAssetsRootPath
=> field ??= Path.Combine(AssemblyLocation, "TestAssets");

private readonly TestEnvironment _environment = TestEnvironment.Create(testOutput);

public void Dispose()
=> _environment.Dispose();

[WindowsNet35OnlyFact]
public void CompileNet35WinFormsApp()
{
TransientTestFolder testFolder = _environment.CreateFolder(createFolder: true);

CopyFilesRecursively(Path.Combine(TestAssetsRootPath, "Net35WinFormsApp"), testFolder.Path);
string projectFilePath = Path.Combine(testFolder.Path, "TestNet35WinForms.csproj");

_ = RunnerUtilities.ExecBootstrapedMSBuild($"{projectFilePath}", out bool success, outputHelper: testOutput);
success.ShouldBeTrue();
}

private static void CopyFilesRecursively(string sourcePath, string targetPath)
{
// First Create all directories
foreach (string dirPath in Directory.GetDirectories(sourcePath, "*", SearchOption.AllDirectories))
{
Directory.CreateDirectory(dirPath.Replace(sourcePath, targetPath));
}

// Then copy all the files & Replaces any files with the same name
foreach (string newPath in Directory.GetFiles(sourcePath, "*", SearchOption.AllDirectories))
{
File.Copy(newPath, newPath.Replace(sourcePath, targetPath), overwrite: true);
}
}
}
23 changes: 15 additions & 8 deletions src/Build.UnitTests/Microsoft.Build.Engine.UnitTests.csproj
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>$(RuntimeOutputTargetFrameworks)</TargetFrameworks>
Expand All @@ -8,13 +8,15 @@

<DefineConstants>$(DefineConstants);MICROSOFT_BUILD_ENGINE_UNITTESTS</DefineConstants>

<!-- Define a constant so we can skip tests that require MSBuildTaskHost -->
<!-- Define a constant so we can skip tests that require MSBuildTaskHost -->
<DefineConstants Condition="'$(MSBuildRuntimeType)' == 'Core'">$(DefineConstants);NO_MSBUILDTASKHOST</DefineConstants>

<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>

<!-- Suppression in needed to build ExampleTaskX86 that targets x86 architecture. -->
<!-- Suppression in needed to build ExampleTaskX86 that targets x86 architecture. -->
<NoWarn>$(NoWarn);MSB3270;CS0436</NoWarn>

<AppConfig>..\Shared\UnitTests\App.config</AppConfig>
</PropertyGroup>

<ItemGroup>
Expand All @@ -30,7 +32,7 @@
<PackageReference Include="NuGet.Frameworks">
<PrivateAssets>all</PrivateAssets>
</PackageReference>

<ProjectReference Include="..\Build\Microsoft.Build.csproj" />
<ProjectReference Include="..\Framework\Microsoft.Build.Framework.csproj" />
<ProjectReference Include="..\MSBuild\MSBuild.csproj" />
Expand All @@ -54,6 +56,13 @@
<Reference Include="System.IO.Compression" Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework' " />
</ItemGroup>

<ItemGroup>
<!-- Ensure that Net35WinFormsApp is not included in the build. -->
<Compile Remove=".\TestAssets\Net35WinFormsApp\**\*.*" />
<EmbeddedResource Remove=".\TestAssets\Net35WinFormsApp\**\*.*" />
<Content Remove=".\TestAssets\Net35WinFormsApp\**\*.*" />
</ItemGroup>

<ItemGroup>
<Compile Include="..\Shared\UnitTests\CommunicationUtilities_Tests.cs" />
<Compile Include="..\Shared\UnitTests\EscapingUtilities_Tests.cs" />
Expand All @@ -77,9 +86,6 @@
<Compile Include="..\Shared\UnitTests\CopyOnWriteDictionary_Tests.cs">
<Link>Collections\CopyOnWriteDictionary_Tests.cs</Link>
</Compile>
<Compile Include="..\Shared\UnitTests\ImmutableDictionary_Tests.cs" Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework' and '$(MSBuildRuntimeType)' == 'Full'">
<Link>Collections\ImmutableDictionary_Tests.cs</Link>
</Compile>
<Compile Include="..\GlobalUsings.cs" Link="GlobalUsings.cs" />

<None Include="..\Shared\UnitTests\App.config">
Expand All @@ -89,6 +95,7 @@
<None Include="..\Shared\UnitTests\xunit.runner.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>

<None Include="TestAssets\**\*">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
Expand Down Expand Up @@ -125,7 +132,7 @@
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemDefinitionGroup>

<ItemGroup Label="TestAssests" Condition="'$(TargetFrameworkIdentifier)' != '.NETFramework'">
<ProjectReference Include=".\TestAssets\ExampleNetTask\ExampleTask\ExampleTask.csproj" />
</ItemGroup>
Expand Down
6 changes: 6 additions & 0 deletions src/Build.UnitTests/TestAssets/Net35WinFormsApp/App.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>

<supportedRuntime version="v2.0.50727"/></startup>
</configuration>
56 changes: 56 additions & 0 deletions src/Build.UnitTests/TestAssets/Net35WinFormsApp/Form1.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions src/Build.UnitTests/TestAssets/Net35WinFormsApp/Form1.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
using System.Windows.Forms;

namespace TestNet35WinForms
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
}
}
167 changes: 167 additions & 0 deletions src/Build.UnitTests/TestAssets/Net35WinFormsApp/Form1.resx
Original file line number Diff line number Diff line change
@@ -0,0 +1,167 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema

Version 2.0

The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.

Example:

... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>

There are any number of "resheader" rows that contain simple
name/value pairs.

Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.

The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:

Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.

mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.

mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.

mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="button1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;button1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="button1.Size" type="System.Drawing.Size, System.Drawing">
<value>222, 133</value>
</data>
<data name="button1.Text" xml:space="preserve">
<value>button1</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>Form1</value>
</data>
<data name="&gt;&gt;button1.Name" xml:space="preserve">
<value>button1</value>
</data>
<data name="&gt;&gt;button1.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>6, 13</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>800, 450</value>
</data>
<data name="button1.Location" type="System.Drawing.Point, System.Drawing">
<value>223, 124</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Form1</value>
</data>
<data name="&gt;&gt;button1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="$this.Language" type="System.Globalization.CultureInfo, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>fr</value>
</metadata>
</root>
19 changes: 19 additions & 0 deletions src/Build.UnitTests/TestAssets/Net35WinFormsApp/Program.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
using System;
using System.Windows.Forms;

namespace TestNet35WinForms
{
internal static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
Loading