After the new reverse APICompat checks we fail the
src build if the ref doesn't match so we don't have
a great way to regenerate the reference assembly.
By using the intermediate path we can still generate
the reference assembly without having a successful
src build.
* Updating the package index for UAP and updating buildtools
* Having System.Reflection.DispatchProxy crosscompile for uap RS3
* Updating buildtools and fixing PR feedback
* Re-add support for uap to the assemblies that already had a netcoreapp2.0 config for Windows
If BinPlaceNETCoreAppPackage=true then both the refs and
runtime assets that are part of Microsoft.NETCore.App will be
bin-placed separtely.
Runtime assets will be
bin/pkg/netcoreapp/runtime
Refs assets will be
bin/ref/microsoft.netcore.app
"Enlistment" is a term for what in today's git world is now commonly called a "repo".
Updating this in a few places to avoid confusing compiler errors.
* With this change we will have the next behavior when building/running tests:
-When building the tests we will still bin place the test assets to the OutputDirectory (corefx\bin\OSGroup.Configuration\TestProject\TargetGroup/)
-When running the tests we will bin place the tests assets to this new TestPath which will be the TestPath. This new path will be the test's working directory where we will bin place the RunTests.cmd and necessary dependencies in tests.targets. Also the testResults.xml will be found here after the test execution.
-TestPath is set to be bin/tests/<TestProject>/<BuildConfiguration>/ (i.e corefx\bin\tests\System.Collections.Immutable.Tests\netcoreapp-Windows_NT-Debug-x64) in dir.props
-This TestPath will be added to the BinPlaceDir in FrameworkTargeting.targets when BinPlaceTest is set to true. Then in the BinPlaceFiles target the test assets will be hardlinked to the TestPath.
This will isolate every test execution per build configuration and will allow people to run the same test project for all of the supported configurations on the same repo without having to clean the repo.
Now that we've shipped the NETStandard support package we will no longer build its content
from `master`.
It will be serviced from the `release/2.0.0` branch and the only netfx builds in `master` will
correspond to package content.
These are for packages that are outside of the shared framework. We shouldn't make them
cross-compile for netcoreapp2.1 just because master has moved to that. Instead we'll make
them continue to target netcoreapp2.0.
Two cases we want to cross-compile are OpenSsl and Cng since these have already started
taking advantage of API added in NCA2.1 (span). For this we'll cross-compile and redist the
old netcoreapp2.0 implementation.
Two other special cases are System.Memory and System.Runtime.CompilerServices.Unsafe.
In these cases we wanted to keep them targeting netcoreapp (netcoreapp2.1) and
make their portable implementations apply for netcoreapp2.0.
* The GenerateReferenceAssembly target can be run as a manual step on a
project. When run, it produces a source code file <Assembly>.cs, in the
reference assembly folder for the library. This source file can be used
to compile an equivalent reference assembly.
* Use the target to generate reference assemblies for the following
libraries:
* System.Collections.Immutable
* System.Reflection.Metadata
* System.Threading.Tasks.Dataflow
* System.Threading.Tasks.Extensions
I found a couple issues where we were incorrectly configuring projects
that produced references as UAPAOT.
I fixed these, but I'd like to make that impossible. This does that by
using the uapaot configuration for reference selection.
We need to support differing ref/impl per version of desktop until it
adds inbox support for ns2.0.
To do this I've made the netfx build also build for net462 and net47.
Then I've moved the files into framework-specific folders for each TFM.
For a given TFM it will prefer the files in its own folder then fallback
to the previous TFM if it doesn't have that file.
This dll has a reference to the earliest version of every contract
desktop ever shipped.
This will ensure that RAR sees conflicts and adds binding redirects.
This adds ILLink (a .NET Core build of the mono linker) to the build
tools and uses it to trim non-public unreachable IL and metadata from
our assemblies.
This is enabled by default for any assembly that is part of NETCore.App.
This can be disabled by setting ILLinkTrimAssembly=false.
In some cases ILLink may trim too much, for example a runtime
dependency via reflection on private or internal API.
If we cannot update ILLink to understand this dependency via heuristic
then we can manually "root" the private or internal API.
This is done by adding an XML file next to the project with the name
ILLinkTrim.xml that follows the format documented here:
https://github.com/mono/linker/blob/master/linker/README
* The targets themselves are now located in FrameworkTargeting.targets.
This will let us easily merge them back into buildtools, where the
common logic should live
* The specific properties used in corefx are now in dir.targets.
ReferenceFromRuntime for src projects isn't safe. It allows any source
project to reference the output of another source project without
properly sequencing the build.
This fixes that by changing ReferenceFromRuntime to instead use a
ProjectReference to the runtime project for the building configuration
and filter that to just the files requested.
I also completely block the use of ReferenceFromRuntime in test projects
* [WIP]Created src\tests.proj which is mostly building all tests
* Convert test project .builds to Configuration.props
* Fix test paths in targetingpack.props, move test-runtime.
* Move test-runtime under external.
* Rename RuntimeDir->RuntimePath in targetingpacks.props and
Xunit.Runtime.depproj.
* Remove test-runtime project.json from the SupplementalTestData list in
dir.targets.
* Remove XUnit.Runtime.depproj from tests.proj
* Convert test .builds files to Configuration.props.
* Revert "Convert test project .builds to Configuration.props"
This reverts commit 1efc4d9a02d1c2eced0f20a544abcbcd0092f40c.
* Fix compilation error in System.Collections.Concurrent.Tests
* Fix condition in System.Collections ref project
* Fix two more Collections test project issues
* Add Configuration.props for System.Collections ref
* Fix TargetGroup conditions in System.Collections.Tests.csproj.
* Fix compilation problems with NameResoltion.Pal.Tests.
* Fix compilation errors in SqlClient Stress tests
* Fix IO.Compression.Performance tests compilation
* Fix compilation and configurations of System.Net.Http.Unit.Tests.csproj.
* Fix compilation issues in System.Private.Xml.Linq tests
* Disable XsltScenarios.Tests project, like it was before.
* Fix missing DefineConstants for System.Linq ref project.
* Fix compilation of System.Net.Primitives.Pal.Tests.csproj
* Fix compilation of System.Net.Primitives.UnitTests.Tests.csproj
* Fix compilation of System.Security.Cryptography.Cng.Tests.csproj.
* Fix compilation of System.Net.Primitives reference project
* Fix compilation of System.Net.Security ref project
* Fix compilation of SYstem.Net.Security.Tests.csproj
* Fix configuration of X509Certificates ref project
* Fix compilation errors in System.Net.Http.Unit.Tests.csproj
* Fix Common.Tests.csproj
* Fix System.Diagnostics.Debug.Tests.csproj
* Fix Microsoft.Win32.Registry.Tests.csproj
* Add runtime.native.System.Data.SqlClient.sni to external project
* Fix System.Diagnostics.TraceSource.Tests.csproj
* Fix System.IO.Compression.Performance.Tests.csproj
* Move supplemental test data into test-runtime/project.json
* Fix System.IO.FileSystem.Watcher.Tests.csproj
* Fix System.IO.FileSystem.Tests.csproj
* Fix System.IO.Pipes.AccessControl.Tests.csproj
* Fix System.IO.MemoryMappedFiles.Tests.csproj
* Fix System.IO.Pipes.Tests.csproj
* Fix System.Json.Tests.csproj
* Add missing supplemental test data for net security tests
* Fix resource names in System.Xml.XPath.XDocument.Tests.csproj
* Fix Assembly.Location test case
* Fix assembly loading paths in DefaultLoadContextTest.cs
* Fix issues in System.Runtime.Loader.Tests.csproj
* Fix RootNamespace in ResourceManager tests
* Mark OpenSSL tests as unsupported on Windows
* Fix RootNamespace in System.Xml.XPath.Tests.csproj
* Fix RootNamespace in System.Xml.XPath.XmlDocument.Tests.csproj
* Fix System.IO.Compression.Tests.csproj
* Add missing Configurations.props files for System.Net projects
* Fix compilation issues in WinHttpHandler tests
* Add fixes and a workaround for Linq.Expressions tests
* Add workaround for System.Runtime.Tests
* Use extension methods explicitly in Ref.Emit tests
* Hook up test projects into build
* Fix build configuration of Crypto.Primitives for netcoreapp
* Enable VB tests outside Windows
* Enable Mail tests outside windows
* Don't run Unsafe tests outside windows
* Don't build Unsafe tests outside Windows
* Don't build WebServer project outside of Windows.
* Fix corerun path for Unix tests.
* Fix casing of 'Native' directory in NETCoreApp private pkgproj
* Remove runtime-specific stuff from Xunit.Runtime.depproj
* Move tests into a separate project ('tests.msbuild') which isn't built in build.proj
* Remove duplicate types from NameResolution.Pal tests
* Skip tests in a project if there is no compatible configuration.
* Include internal socket types only on Windows in NameResolution tests
* Manually fix S.R.InteropServices configurations
* Rename tests.msbuild -> tests.builds
* Manually fix System.Text.Encoding.Tests.csproj configuration
* Manually fix System.Threading.Tests configuration
* Manually clean up System.Runtime.Tests.csproj
* Fix System.IO.FileSystem.Tests configurations
* Manually fix System.Globalization.Tests configurations
* Manually fix System.IO.Pipes.Tests configurations
* Manually fix System.IO.Compression.Tests configurations
* Manually fix System.Runtime.Extensions.Tests configurations
* Manually fix System.IO.MemoryMappedFiles.Tests configurations
* Manually fix S.Diagnostics.Process.Tests configurations
* Manually fix System.ComponentModel.TypeConverter.Tests configurations
* Misc PR feedback.
* Use HostRunnerName instead of HostRunner in Process tests
* Fix configurations for S.ServiceProcess.ServiceController.Tests
* Revert to using ConfigurationErrorMsg to check if tests should be skipped.
Configuration still defaults to 'Debug' even if there is no valid configuration.
This cleans out a lot of the project.json batch restoring, validation,
and generation from the build.proj. Also enables restoring of packages
for individual projects again. We well eventually move all projects that
need restoring under external so we can keep them isolated from the rest
of the build.
Currently we build and test in CI differently from the official pipeline. This change will help reduce inconsistencies in the way in which we build to expose issues sooner.
The build will now build the product as packages, install them locally, restore the test-runtime deps for the locally built versions and then test them. The locally built
packages are installed to the localpackages folder and the LKG set restored goes into the packages folder. Tests will only restore against locally built packages as a
source and then copy the required LKG dependencies like specific runtime dependencies that aren't built locally. The localpackages are overwritten each time a build occurs so that only one version remains in the folder.
Other changes required to make this work:
- Add missing runtimes in the supports clause
- Add LKG runtime packages not produced by the build
* Vertical build changes
* Build a vertical in dev/eng
* remove repro.bat from check-in
* Remove defaulttargetgroup from configurations.props files
* Remove configurations.props from test libraries
* Additional configuration files, updating traversal.
* Add default configurations for ref projects
* Remove default targetgroups, disable code analysis (currently breaking the
vertical build).
* Build vertical using Eric's changes to configurations
* Minor fixes to build from a clean enlitment
* Set targets properties in dir.props
* Make vertical build the default
* Include building src\tools in init-tools.cmd
* Add linux init-tools
* Fix msbuild.sh command
* Add build tools message to Linux
* Revert init-tools, investigate building corefx tools tomorrow
* Update configurations, remove empty targetgroup from all projects, modify
most conditionals to be positive conditions instead of negative
* Remove unneccessary generateprojectconfigurations project
* Build CoreFx.tools in init-tools
* Can't build corefx.tools in init-tools because packages aren't restored
* Hack build to build refs first
* Slightly less hacky reference project build, but still kind of hacky...
* Align properties for ref builds to prevent binclash and overbuilding
* Update BeforeTarget for rename
* Rework traversal to work with ref and corefx tools projects
* Add target for builds projects
* Fully qualify paths to projects
* Fully quality path name for corefx.tools
* testing removing osgroup from groovy on Windows
* Remove OSGroup from config.json
* revert change to groovy
* return os property
* Try changing osgroup to hostos
* hack around osgroup setting
* Fix passing groups
* Add system.collections which was missing from system.console
* Add some missing references for Unix build
* Add references for unix
* Unix support changes
* Fix typo in system.net.http
* Fix typo in system.threading.overlapped
* no ref project available for system.reflection.metadata
* Unix changes
* Exclude system.memory
* diagnostics.fileversioninfo was missing reference to Path
* Unix changes
* Fix reference name
* Add reference for unix
* Move source file to windows only
* Disable building system.threading.overlapped
* Used GenerateBuilds.ps1 script to generate the P2P references from the project.json files in ref
* Update refs to build with ProjectReference's instead of package references
This deletes all the ref\project.json files and instead adds ProjectReference
to other refs that are used to build.
There is only one exception which was System.Net.Http which needed a project.json
to get the net46 targeting pack otherwise everything else is P2P.
* Update Reflection.Emit contracts to support latest version of contracts
* Add depproj to get windows.winmd support when building refs
* Special handle System.Net.Http ref project to deal with net46 targeting pack
* Moved CLSCompliant to SecureString ctor instead of type
* Add P2P reference from S.IO -> S.R.Extensions
* Add additional ProjectReferences to more ref projects after master rebase
* Start binplacing ref assemblies and disable rest of build
* Simplify all ref projects to only build for netcoreapp (default target group)
* Only binplace netcoreapp refs
* Allow Reference's to be resolved from targeting pack directories
* Use GenerateBuilds.ps1 to convert src project.json refs to References
* Allow overriding stuff in Tools
* System.Runtime src project building against targeting pack
* Re-purpose GenerateBuilds.ps1 to re-write src references
* Only build csproj files in src.builds
* More custom stuff in GenerateBuilds.ps1
* Binplace all netstandard assemblies into netcoreapp as well.
* Add project.json to System.Collections.Immutable
* More custom generatebuilds.ps1 stuff
* Normalize csproj files before running GenerateBuilds.ps1
* Better match the replaced 'None Include="project.json"' line.
* Another missing project.json inclusion in csproj
* Remove ExcludeFromCodeCoverageAttribute from Immutable project
* Include another project.json
* Add some P2P references
* Add another project.json include
* Disable Http.Rtc project.
* Disable two more UWP projects and another P2P ref"
* More Cleanup
* Run GenerateBuilds.ps1 to re-write all nuget refs as <Reference>'s
* Binplace netstandard runtime assemblies to netcoreapp as well.
* Re-hook all src projects into build.proj
* Fix bin clashing caused by bad ProjectReference metadata
* Use 'copy' instead of 'cp' in init-tools.cmd. Add copying to init-tools.sh as well.
* Correct casing of windows.winmd in depproj
* Disable System.Memory.csproj outside of Windows
* Fix unix exclusion of System.Memory, and include vbproj files
* Fix VisualBasic compilation
* There was an extra definition of MemberTypes that was internal to the
assembly. It's now defined in System.Private.CoreLib, so I deleted the
extra here.
* There was an invalid call in Operators.vb that I fixed.
* Add additional project references and configuration fixes after rebase
* Fix build warnings in ref projects
* Fix build warnings in src projects
This change adds Path.GetRelativePath, which will calculate the relative
path from one directory to another file/directory.
This change also adds support for targetting netcoreapp