* Use a WorkspaceContext in dotnet-build to cache project data across
multiple compilations in a single build action
* Dramatically reduce string and object duplication by introducing a
"Symbol Table" that shares instances of NuGetVersion, NuGetFramework,
VersionRange and string across multiple lock-file parses
Test Results:
* Testing was done by compiling Microsoft.AspNetCore.Mvc (and it's
dependencies) and taking memory snapshots after each compilation in
dotMemory
* We used to allocate ~3MB and deallocate ~2.5MB on EACH compilation in
a single build action. This has been reduced to ~120KB
allocated/deallocated
* After introducing WorkspaceContext, total memory usage spiked from 6MB
across the whole build action to about 13MB, introducing the symbol
table dropped it back to about 5-6MB.
* Add satellite assemblies to deps file with locale data
* Publish satellite assemblies to output during publish
* Copy satellite assemblies from project-to-project dependencies on
build and publish
- Use the right path separator char for unix.
- Contruct some of the args to crossgen outside the loop.
- Add the null check inside Command.Environment.
In the MSI we used to check for any previous installation and we prevent any
installation of 'Release' version on top of 'Nightly' version and vice
versa. This is no longer needed since CLI SxS now. This is reminiscent of
pre-sharedFx CLI.
Fixes - #2467
WIP
WIP
WIP
Test out not publishing runtimeAssets
WIP
WiP x-publish
update cross-publish-test
Update Cross Publish tests
remove --config from restore
fix build
update cross publish tests
fix test compilation error
test failure fix
fix test failure
update tests
tracing
fix desktop publishing
do publish with no build, call build manually
fix
Make host publish optional, fix faux libraries?
update
Cross Publish test working
try changing test to netcore.app
fallback to host from current platform
revert change to project.json to target Microsoft.NETCore.App
fallback to compilation build output
update kestrel standalone app project.json
Make project tools command resolver test more self-contained.
make Kestrel Standalone restore against N-1
Add support to enable polling to watch for new builds. It will
try to publish the last 10 builds by default. If the build has
all the necessary runtime packages and doesn't have the packages.pushed
semaphore file.
Also add support for forcing the publish of a given build set in the
following environment variable FORCE_PUBLISH_BLOB_BUILD_VERSION. This will
blindly try to pull all the nupkgs for the given build ignoring if they
were already published or have all the runtimes specified.
When checking if the provided assembly is the Entry Point Assembly, we
previously just checked if the AssemblyNames were equal, but it turns
out AssemblyName doesn't implement Equals, so it was using Reference
Equality, which fails. This change uses Assembly.Equals, which has an
Equals implementation that works.
Also adds some tests to ensure it's working.
This unblocks scenarios where the EntityFramework `dotnet-ef` command
was trying to read DependencyContext.Default but receiving a null
reference.
The ProjectWithTests needed to be moved outside of TestAssets\TestProjects because it can't be restored --infer-runtimes and it has to be built with netcoreapp1.0.
- Move src\corehost\packaging to pkg\ directory.
- Renamed PackageCoreHost to PackagePkgProjects and removed blocker
- Updated copy of packages in PackagePkgProjects target to override (because there is no proper clean)
- Update dir.props to match the package version for the runtime.json
- Moved all CoreHost packages under Microsoft.NETCore.DotNetHost directory
- Add the license files to the packages
Add support for building Microsoft.NETCore.App meta-package
- VersionNumber will be of form 1.0.0-rc2-<NETSTandard.Library build#>-<CLIbuild#>
EX: 1.0.0-rc2-23931-002203
- Add the new version number to the commit and PR message.
- Check if anything has been updated and no-op if there wasn't anything updated.
- Add support to CC indviduals on the PR.
Add basic Tests for dotnet-compile-fsc
Package Targets execute before TestTargets. Use Generated Nuget Packages in TestTargets. Generate Nuget packages on all platforms, and in C#
Fix bug in dotnet-restore, change fsharp new template, add support for native assets in DependencyContextCsvReader
copy fsc.exe to temp directory instead of package cache
fix rebase error
fix issue
fixes
fixes
fix
temporarily disable debian package e2e testing
fixes
bump fsc version
update fsc version
fix rebase errors
WIP update fsc tool
WIP, rebased and working again, need to solve issues with System.CommandLine
Working state for packaged, command, fsc.exe bugging out with dlopen(, 1): no suitable image found.
execute fsc like a unpublished standalone app
fixup after rebase
working? internet is out
working
cleanup
More cleanup, and run the debian package tests during the Test phase of the build.
update FSharp Test Projects NetStandard Library Version
Update Version Suffix when packing TestPackages. This will enable packing with the right dependency versions on Windows.
update dotnet-test version
Undo the reordering of the build
fix test package project pathsj
ignore net451 build failures for test packages which we need to build on non-windows
update dependency of desktop test app
add dotnetcli feed to nuget config for fsharp dotnet new
update deps after rebase
update dependency of dotnet-compile-fsc
pass args before commandPath when using muxer for tools
adjust testpackage cleaning not to clean packages which are also generated as part of the product from the nuget cache.
undo
Pass projectJson to pack instead of using WorkingDirectory
fix path separators using depsjsoncommandresolver on windows, fix building only specific frameworks for testpackages on non-windows.
PR Feedback
rebase
overwrite fsc runtimeconfig
- Don't use PowerShell to download WiX, instead just use HttpClient.
- Rehome WiX on our Azure blob storage, not only does this remove an
dependency of our build, it also fixes an issue where CodePlex 302's
from HTTPS to HTTP which HttpClient doesn't like.
- Bake version numbers into paths, to help in cases where we upgrade WiX
tool versions but the artifacts folder is not cleaned between builds.
- Make the .Net CLI SDK install SxS.
- Make the .Net Host upgrade till RTM(v.1.0.0).
- Make the .Net Core Sharedfx pkg to use the SharedFx Nuget version instead CLI version.
- Make CLI SDK MSI non-upgradable. It must alwasy be installed SxS.
- The CLI bundle and SharedFx bundle are non-upgradeable.They are also
installed SxS.
- Make host\muxer upgradeable. It will be upgradeable till v1.0.0 RTM.
Post RTM will be installed SxS with v.1.0.0.
- SharedFx MSI was using the CLI MSI version. Fixing it to use the
SharedFx version.
- Do not allow bundles to uninstall. User will be able to uninstall the
individual MSIs.
1. It was using the wrong version of System.Runtime.Serialization.Json
2. When invoking it during the build, we weren't ensuring it was successful, which allows the build to continue when it fails.
- ProjectModel uses AssemblyLoadContext which is only available in netstandard1.5. Moving ProjectModel and all its dependencies up to netstandard1.5.
- Work around our dependencies still being on old CoreFX builds by hoisting System.Runtime.Serialization.Primitives, System.Private.DataContractSerialization, System.Linq.Expressions, and System.Xml.XmlSerializer references to the current version.
`dotnet --version` returns just the version number. This helps tools get this information without having to parse the full info.
Introduce a new argument `--info` that returns the current "long form". With this, we also change the long form to say "RID" instead of "Runtime ID" simply because that would avoid any future localization issues and thus make the parsing easier.
Fix#1607#1882
The file permissions in our cross platform packages were all over the
place. Problems included:
- Executable text files
- Executable MSIL files
- Files not readable by world or group
In addition to just looking bad, it could cause problems in cases where
someone takes the tarballs and copies them to a global location (as
root) because now the deps file was not readable by non root users.
Add an additional step when setting everything up to put sensible
permissions on everything before building os specific packages and
tarballs.
Fixes#2004
unset the hardcoded channel
fix version badge version
fix a capitalization
fix the archives
Update filenames of zip files to have the correct versions
move version gen
fix dependencies between packages
re-disable upgrade test
another fi to add_dir_to_install
fix sdk package name
update the package name functino in monikers
* We need a newer version of Microsoft.CodeAnalysis.CSharp than the one
that NETCore.App depends on. When a newer version of NETCore.App is
published with a higher dependency, we can remove this explicit
reference.
This script can be used to automatically update dotnet/cli's
dependencies on other repos like CoreFX, NuGet, etc.
Currently the script supports updating the CoreFX dependencies.
This change triggers automated DockerHub builds for successful
official Ubuntu builds of rel.1.0.0. The DockerHub repo for this is
https://hub.docker.com/r/microsoft/dotnet-preview/.
The variables DOCKER_HUB_REPO and DOCKER_HUB_TRIGGER_TOKEN are set in
the "DotNet-CLI-CI (Ubuntu) [rel.1.0.0]" VSTS build definition.
This change also allows the Environment TargetConditionAttribute to be
used to require that an environment variable is set, in addition to the
existing functionality of being able to be used to require that an
environment variable is equal to one of a set of specified values.
dotnet host muxer does not support pre-release CLI SDK when no global.json
file is present. So fixing the CLI layout to be in production version
layout. THIS IS A TEMP HACK.
As a part of Package init create all the SharedFx, SharedHost and CLI SDK
layouts. This way all other package targets can take a dependency only on
InitPackage.
- Add Casablanca CPP Rest SDK to corehost
- Correct understanding of portable runtimeTargets section
- Fix minor issues and automation for RID
- CLI Build Integration
- Add API to consume deps files
- Unix doesn't like major as a variable name
- Define NOMINMAX for Windows.h
- Support APP_CONTEXT_DEPS_FILES
- mscorlib.ni can come from native
- Append Dotnet.dll to sdk path
- Muxer vs standalone distinction based on own name.dll
Use local-build corehost.exe
This is staying in the repo, so we can copy the local-built version.
Copy deps and deps.json, make sure corehost temp dir exists
Add additional runtimes to the sharedframework's project.json
Delete an unused file, modify crossgen target condition
* sharedhost\project.json is unused. It is copied from the local build.
* the crossgen target was conditioned on an environment variable, but the
variable could be set to anything. Instead, make sure it is either
"true" or "1".
Use stage2 instead of stage0 for shared framework restore
- Changes in netci.groovy to delete post-merge builds. We are suign VSO
for that.
- Also add RHEL and Windows x86 to PR CI jobs. Instead of doing 'debug'
and 'release' for all platforms we are only selectively have a mixture
of debug and release builds. (For ubuntu we are doing debug and release
but that will change when we have 'Debian 8.2' support. Ubuntu:Debug
will be replaced by Debian8.2:Debug)
- Minor change in install.sh to maintain uniformity in OS names.
These are basic tests for now, which validate installation, upgrade,
uninstall, etc. of the debian package itself. When the shared framework is
fully functional, we will add more tests that cover real functionality.
It now includes the shared framework 'name' (NuGet package name) in the installer. In this case, the installer is called '.NET Core Shared Framework (NETStandard.Library 1.0.0-*)'
This causes three pkg files to be produced:
* A component pkg for the shared framework.
* A component pkg for the shared host.
* A product archive which includes the above two components.
The product archive also needs a distribution.xml file which contains
metadata about the package (name, title, images, etc.).
The installer for the "SDK" itself is still using logic implemented in
package-osx.sh. We should move this logic into the build target as well,
but we may want to wait until the CLI is using the shared framework to do so.
- Use Crossgen's Ready To Run mode on all of the managed assemblies
that make up the shared framework.
- Upgrade the version of the shared framework to match what is used
in the rest of CLI (see the comment in SharedFrameworkTargets.cs to
understand why this is needed).
- Remove the IL mscorlib.dll image, since the Crossgen'd image is
already published.
Fixesdotnet/corefx#6753
Ideally in the project.json for the shared host we would just list the
actual package that holds the shared host, instead of all of
NetStandard.Library, but doing some leads to compliation errors, since
publish wants to include a compile step that has a generated
AssemblyAttributes file which references types like System.String.
- Add libssl-dev dependency to DockerFile, because the package upgrade test still depend on this. It can be removed once a newer package without libssl-dev dependency is uploaded.
- Check pre-reqs in the package script.
dotnet-build will produce a deps file for portable builds, and will now
create "runnable" outputs for RID-less targets
the outputs won't actually be runnable today because we need corehost
changes and to generate a deps.json file for corehost to use.
Update .exe's project.json Target Framework from dnxcore50 to netstandardapp1.5.
Update .dll's project.json Target Framework from dnxcore50 to netstandard1.3.
Adding workaround for DataContractSerialization to src\dotnet\project.json to fix crossgen issue.
Build 23901 has a dependency issue that doesn't allow the runtime.any.System.Private.DataContractSerialization
package to be restored. When we move to a new build of CoreFX we should take this workaround out.
- Changes to build scripts to produce Winx86 build artifacts like
zip/installer.
- Change to run Nuget-xplat in the same process as dotnet.exe instead of
spinning up a new 'corerun' process.
Set the calling convention to '__stdcall' explicitly else the default is
'_cdecl' on windows which mismatches with coreclr hosting APIs.
Use the newly built 'corehost' in stage1.
DOTNET_HOME is no longer required, though it is a documented override, so this change removes all unnecessary references to DOTNET_HOME from the CLI Repo.
script changes to pipe configuration to test.ps1
debug commit, remove this commit
Change dotnet-test to invoke dotnet-test-xunit directly
build tests with configuration, framework, runtime in windows
Update testtargets in new build scripts
make configuration first arg to dotnet test
PR Feedback
update command factory
fix interface
test update
- Added --version-suffix to build and publish
- Support reading DOTNET_* version variables everywhere versions can be read
- Show the commit sha in dotnet --version
- Added tests that check the assembly output version
- Set DOTNET_BUILD_VERSION when producing the CLI app itself so that it has the version information stamped in for help.