You've already forked linux-packaging-mono
Imported Upstream version 5.8.0.22
Former-commit-id: df344e34b07851d296efb3e6604c8db42b6f7aa3
This commit is contained in:
parent
5f4a27cc8a
commit
7d05485754
@@ -26,6 +26,19 @@ Pull Requests
|
||||
* **DO** refer to any relevant issues, and include [keywords](https://help.github.com/articles/closing-issues-via-commit-messages/) that automatically close issues when the PR is merged.
|
||||
* **DO** tag any users that should know about and/or review the change.
|
||||
* **DO** ensure each commit successfully builds. The entire PR must pass all tests in the Continuous Integration (CI) system before it'll be merged.
|
||||
* **DO** address PR feedback in an additional commit(s) rather than ammending the existing commits, and only rebase/squash them when necessary. This makes it easier for reviewers to track changes. If necessary, squashing should be handled by the merger using the ["squash and merge"](https://github.com/blog/2141-squash-your-commits) feature, and should only be done by the contributor upon request.
|
||||
* **DO** address PR feedback in an additional commit(s) rather than amending the existing commits, and only rebase/squash them when necessary. This makes it easier for reviewers to track changes.
|
||||
* **DO** assume that ["Squash and Merge"](https://github.com/blog/2141-squash-your-commits) will be used to merge your commit unless you request otherwise in the PR.
|
||||
* **DO NOT** fix merge conflicts using a merge commit. Prefer `git rebase`.
|
||||
* **DO NOT** mix independent, unrelated changes in one PR. Separate real product/test code changes from larger code formatting/dead code removal changes. Separate unrelated fixes into separate PRs, especially if they are in different assemblies.
|
||||
|
||||
Merging Pull Requests (for contributors with write access)
|
||||
----------------------------------------------------------
|
||||
|
||||
* **DO** use ["Squash and Merge"](https://github.com/blog/2141-squash-your-commits) by default for individual contributions unless requested by the PR author.
|
||||
Do so, even if the PR contains only one commit. It creates a simpler history than "Create a Merge Commit".
|
||||
Reasons that PR authors may request "Merge and Commit" may include (but are not limited to):
|
||||
|
||||
- The change is easier to understand as a series of focused commits. Each commit in the series must be buildable so as not to break `git bisect`.
|
||||
- Contributor is using an e-mail address other than the primary GitHub address and wants that preserved in the history. Contributor must be willing to squash
|
||||
the commits manually before acceptance.
|
||||
|
||||
|
||||
@@ -1,255 +0,0 @@
|
||||
Cross-Platform Cryptography
|
||||
===========================
|
||||
|
||||
Cryptographic operations in .NET are performed by existing system libraries.
|
||||
As with most technological decisions, there are various pros and cons.
|
||||
Since the system already has a vested interest in making the cryptography libraries safe from security vulnerabilities,
|
||||
and already has an update mechanism that system administrators should be using, .NET gets to benefit from this reliability.
|
||||
Users who have requirements to use FIPS-validated algorithm implementations also get that benefit for free (when the system
|
||||
libraries are FIPS-validated, of course).
|
||||
The biggest con is that not all system libraries offer the same capabilities.
|
||||
While the core capabilities are present across the various platforms, there are some rough edges.
|
||||
|
||||
### Versioning
|
||||
|
||||
In .NET Core 1.0 and .NET Core 1.1 the macOS implementation of the cryptography classes was based on OpenSSL.
|
||||
In .NET Core 2.0 the dependency was changed to use Apple's Security.framework.
|
||||
Within this document "macOS" should use the values for "Linux" if running .NET Core 1.x, as .NET Core uses OpenSSL in all Linux versions.
|
||||
|
||||
## Hash Algorithms
|
||||
|
||||
Hash algorithms, and HMAC algorithms, are very standard bytes-in-bytes-out operations.
|
||||
All hash algorithm (and HMAC) classes in .NET Core defer to the system libraries (including the \*Managed classes).
|
||||
|
||||
While the various system libraries may have different performance, there should not be concerns of compatibility.
|
||||
|
||||
In the future there is a possibility that new hash algorithms may be added to .NET Core before one (or more) supported platforms have system support for the algorithm.
|
||||
This would result in a `PlatformNotSupportedException` when invoking the `Create()` method for the algorithm.
|
||||
|
||||
## Symmetric Encryption
|
||||
|
||||
The underlying ciphers and chaining are performed by the system libraries.
|
||||
|
||||
| Cipher + Mode | Windows | Linux | macOS |
|
||||
|---------------|---------|-------|-------|
|
||||
| AES-CBC | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|
||||
| AES-ECB | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|
||||
| 3DES-CBC | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|
||||
| 3DES-ECB | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|
||||
| DES-CBC | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|
||||
| DES-ECB | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|
||||
|
||||
In the future there is a possibility that new ciphers may be added to .NET Core before one (or more) supported platforms have system support for it.
|
||||
This would result in a `PlatformNotSupportedException` when invoking the `Create()` method for the algorithm.
|
||||
|
||||
In the future there is a possibility that new cipher/chaining modes may be added to .NET Core before one (or more) supported platforms have system support for it.
|
||||
This would result in a `PlatformNotSupportedException` when invoking the `CreateEncryptor()` or `CreateDecryptor()` methods for the algorithm (or overloads to those methods).
|
||||
|
||||
In the future there is a possibility that new cipher/chaining modes may be added to .NET Core and that these new modes may not apply to all symmetric algorithms.
|
||||
This would likely result in a `NotSupportedException` when using the set-accessor of the `Mode` property on the `SymmetricAlgorithm` object, but this prediction is subject to change.
|
||||
|
||||
## Asymmetric Cryptography
|
||||
|
||||
### RSA
|
||||
|
||||
RSA key generation is performed by the system libraries, and is subject to size limitations and performance characteristics thereof.
|
||||
RSA key operations are performed by the system libraries, and the types of key that may be loaded are subject to system requirements.
|
||||
|
||||
.NET Core does not expose "raw" (unpadded) RSA operations, and .NET Core relies on the system libraries for encryption (and decryption) padding.
|
||||
Not all platforms support the same padding options.
|
||||
|
||||
| Padding Mode | Windows (CNG) | Linux (OpenSSL) | macOS | Windows (CAPI) |
|
||||
|--------------|---------------|-----------------|-------|----------------|
|
||||
| PKCS1 Encryption | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|
||||
| OAEP - SHA-1 | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|
||||
| OAEP - SHA-2 (SHA256, SHA384, SHA512) | :white_check_mark: | :x: | :x: | :x: |
|
||||
| PKCS1 Signature (MD5, SHA-1) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|
||||
| PKCS1 Signature (SHA-2) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :question: |
|
||||
| PSS | :white_check_mark: | :x: | :x: | :x: |
|
||||
|
||||
Windows CAPI is capable of PKCS1 signature with a SHA-2 algorithm, but the individual RSA object may be loaded in a CSP which does not support it.
|
||||
|
||||
#### RSA on Windows
|
||||
|
||||
* Windows CNG is used on Windows whenever `new RSACng()` is used.
|
||||
* Windows CAPI is used on Windows whenever `new RSACryptoServiceProvider()` is used.
|
||||
* The object returned by `RSA.Create()` is internally powered by Windows CNG, but this is an implementation detail subject to change.
|
||||
* The `GetRSAPublicKey()` extension method for X509Certificate2 will currently always return an RSACng instance, but this could change as the platform evolves.
|
||||
* The `GetRSAPrivateKey()` extension method for X509Certiicate2 will currently prefer an RSACng instance, but if RSACng cannot open the key RSACryptoServiceProvider will be attempted.
|
||||
* In the future other providers could be preferred over RSACng.
|
||||
|
||||
#### Native Interop
|
||||
|
||||
.NET Core exposes types to allow programs to interoperate with the system libraries upon which the .NET cryptography code is layered.
|
||||
The types involved do not translate between platforms, and should only be directly used when necessary.
|
||||
|
||||
| Type | Windows | Linux | macOS |
|
||||
|------|---------|-------|-------|
|
||||
| RSACryptoServiceProvider | :white_check_mark: | :question: | :question: |
|
||||
| RSACng | :white_check_mark: | :x: | :x: |
|
||||
| RSAOpenSsl | :x: | :white_check_mark: | :question: |
|
||||
|
||||
RSAOpenSsl on macOS works if OpenSSL is installed in the system and an appropriate libcrypto dylib can be found via dynamic library loading, otherwise exceptions will be thrown.
|
||||
|
||||
On non-Windows systems RSACryptoServiceProvider can be used for compatibility with existing programs, but a `PlatformNotSupportedException` will be thrown from any method which requires system interop, such as opening a named key.
|
||||
|
||||
### ECDSA
|
||||
|
||||
ECDSA key generation is performed by the system libraries, and is subject to size limitations and performance characteristics thereof.
|
||||
ECDSA key curves are defined by the system libraries, and are subject to the limitations thereof.
|
||||
|
||||
| EC Curve | Windows 10 | Windows 7 - 8.1 | Linux | macOS |
|
||||
|----------|------------|-------|-------|-----------------|
|
||||
| NIST P-256 (secp256r1) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|
||||
| NIST P-384 (secp384r1) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|
||||
| NIST P-521 (secp521r1) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|
||||
| brainpool curves (as named curves) | :white_check_mark: | :x: | :question: | :x: |
|
||||
| other named curves | :question: | :x: | :question: | :x: |
|
||||
| explicit curves | :white_check_mark: | :x: | :white_check_mark: | :x: |
|
||||
| Export or import as explicit | :white_check_mark: | :x: | :white_check_mark: | :x: |
|
||||
|
||||
Support for named curves was added to Windows CNG in Windows 10, and is not available in prior OSes, with the exception of the three curves which had special support in Windows 7.
|
||||
See [CNG Named Elliptic Curves](https://msdn.microsoft.com/en-us/library/windows/desktop/mt632245(v=vs.85).aspx) for the expected support.
|
||||
|
||||
Not all Linux distributions have support for the same named curves.
|
||||
|
||||
Exporting with explicit curve parameters requires system library support which is not available on macOS or older versions of Windows.
|
||||
|
||||
#### Native Interop
|
||||
|
||||
.NET Core exposes types to allow programs to interoperate with the system libraries upon which the .NET cryptography code is layered.
|
||||
The types involved do not translate between platforms, and should only be directly used when necessary.
|
||||
|
||||
| Type | Windows | Linux | macOS |
|
||||
|------|---------|-------|-------|
|
||||
| ECDsaCng | :white_check_mark: | :x: | :x: |
|
||||
| ECDsaOpenSsl | :x: | :white_check_mark: | :question: |
|
||||
|
||||
ECDsaOpenSsl on macOS works if OpenSSL is installed in the system and an appropriate libcrypto dylib can be found via dynamic library loading, otherwise exceptions will be raised.
|
||||
|
||||
### DSA
|
||||
|
||||
DSA key generation is performed by the system libraries, and is subject to size limitations and performance characteristics thereof.
|
||||
|
||||
| Function | Windows CNG | Linux | macOS | Windows CAPI |
|
||||
|----------|-------------|-------|-------|--------------|
|
||||
| Key creation (<= 1024 bits) | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: |
|
||||
| Key creation (> 1024 bits) | :white_check_mark: | :white_check_mark: | :x: | :x: |
|
||||
| Loading keys (<= 1024 bits) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|
||||
| Loading keys (> 1024 bits) | :white_check_mark: | :white_check_mark: | :question: | :x: |
|
||||
| FIPS 186-2 | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|
||||
| FIPS 186-3 (SHA-2 signatures) | :white_check_mark: | :white_check_mark: | :x: | :x: |
|
||||
|
||||
macOS seems to be capable of loading DSA keys whose size exceeds 1024-bit, but does not perform FIPS 186-3 behaviors with those keys, so the behavior of those keys is undefined.
|
||||
|
||||
#### DSA on Windows
|
||||
|
||||
* Windows CNG is used on Windows whenever `new DSACng()` is used.
|
||||
* Windows CAPI is used on Windows whenever `new DSACryptoServiceProvider()` is used.
|
||||
* The object returned by `DSA.Create()` is internally powered by Windows CNG, but this is an implementation detail subject to change.
|
||||
* The `GetDSAPublicKey()` extension method for X509Certificate2 will currently always return an DSACng instance, but this could change as the platform evolves.
|
||||
* The `GetDSAPrivateKey()` extension method for X509Certiicate2 will currently prefer an DSACng instance, but if DSACng cannot open the key DSACryptoServiceProvider will be attempted.
|
||||
* In the future other providers could be preferred over DSACng.
|
||||
|
||||
#### Native Interop
|
||||
|
||||
.NET Core exposes types to allow programs to interoperate with the system libraries upon which the .NET cryptography code is layered.
|
||||
The types involved do not translate between platforms, and should only be directly used when necessary.
|
||||
|
||||
| Type | Windows | Linux | macOS |
|
||||
|------|---------|-------|-------|
|
||||
| DSACryptoServiceProvider | :white_check_mark: | :question: | :question: |
|
||||
| DSACng | :white_check_mark: | :x: | :x: |
|
||||
| DSAOpenSsl | :x: | :white_check_mark: | :question: |
|
||||
|
||||
DSAOpenSsl on macOS works if OpenSSL is installed in the system and an appropriate libcrypto dylib can be found via dynamic library loading, otherwise exceptions will be raised.
|
||||
|
||||
On non-Windows systems RSACryptoServiceProvider can be used for compatibility with existing programs, but a `PlatformNotSupportedException` will be thrown from any method which requires system interop, such as opening a named key.
|
||||
|
||||
## X.509 Certificates
|
||||
|
||||
The majority of support for X.509 certificates in .NET Core comes from system libraries.
|
||||
All certificates are required to be loaded by the underlying system library to be loaded into an `X509Certificate2` instance in .NET Core (or an `X509Certificate` instance).
|
||||
|
||||
### Reading a PKCS12/PFX
|
||||
|
||||
| Scenario | Windows | Linux | macOS |
|
||||
|----------|---------|-------|-------|
|
||||
| Empty | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|
||||
| One certificate, no private key | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|
||||
| One certificate, with private key | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|
||||
| Multiple certificates, no private keys | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|
||||
| Multiple certificates, one private key | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|
||||
| Multiple certificates, multiple private keys | :white_check_mark: | :x: | :white_check_mark: |
|
||||
|
||||
### Writing a PKCS12/PFX
|
||||
|
||||
| Scenario | Windows | Linux | macOS |
|
||||
|----------|---------|-------|-------|
|
||||
| Empty | :white_check_mark: | :white_check_mark: | :x: |
|
||||
| One certificate, no private key | :white_check_mark: | :white_check_mark: | :x: |
|
||||
| One certificate, with private key | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|
||||
| Multiple certificates, no private keys | :white_check_mark: | :white_check_mark: | :x: |
|
||||
| Multiple certificates, one private key | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|
||||
| Multiple certificates, multiple private keys | :white_check_mark: | :x: | :white_check_mark: |
|
||||
| Ephemeral loading | :white_check_mark: | :white_check_mark: | :x: |
|
||||
|
||||
macOS cannot load certificate private keys without a keychain object, which requires writing to disk.
|
||||
Keychains are created automatically for PFX loading, and are deleted when no longer in use.
|
||||
Since the `X509KeyStorageFlags.EphemeralKeySet` option means that the private key should not be written to disk, asserting that flag on macOS results in a `PlatformNotSupportedException`.
|
||||
|
||||
### Writing a PKCS7 certificate collection
|
||||
|
||||
Windows and Linux both emit DER-encoded PKCS7 blobs. macOS emits indefinite-length-CER-encoded PKCS7 blobs.
|
||||
|
||||
### X509Store
|
||||
|
||||
On Windows the X509Store class is a representation of the Windows Certificate Store APIs, and work the same as they did on .NET Framework.
|
||||
On Linux the X509Store class is a projection of system trust decisions (read-only), user trust decisions (read-write), and user key storage (read-write).
|
||||
On macOS the X509Store class is a projection of system trust decisions (read-only), user trust decisions (read-only), and user key storage (read-write).
|
||||
|
||||
| Scenario | Windows | Linux | macOS |
|
||||
|----------|---------|-------|-------|
|
||||
| Open CurrentUser\My (ReadOnly) | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|
||||
| Open CurrentUser\My (ReadWrite) | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|
||||
| Open CurrentUser\My (ExistingOnly) | :white_check_mark: | :question: | :white_check_mark: |
|
||||
| Open LocalMachine\My | :white_check_mark: | `CryptographicException` | :white_check_mark: |
|
||||
| Open CurrentUser\Root (ReadOnly) | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|
||||
| Open CurrentUser\Root (ReadWrite) | :white_check_mark: | :white_check_mark: | `CryptographicException` |
|
||||
| Open CurrentUser\Root (ExistingOnly) | :white_check_mark: | :question: | :white_check_mark: (if ReadOnly) |
|
||||
| Open LocalMachine\Root (ReadOnly) | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|
||||
| Open LocalMachine\Root (ReadWrite) | :white_check_mark: | `CryptographicException` | `CryptographicException` |
|
||||
| Open LocalMachine\Root (ExistingOnly) | :white_check_mark: | :question: | :white_check_mark: (if ReadOnly) |
|
||||
| Open CurrentUser\Disallowed (ReadOnly) | :white_check_mark: | :question: | :white_check_mark: |
|
||||
| Open CurrentUser\Disallowed (ReadWrite) | :white_check_mark: | :question: | `CryptographicException` |
|
||||
| Open CurrentUser\Disallowed (ExistingOnly) | :white_check_mark: | :question: | :white_check_mark: (if ReadOnly) |
|
||||
| Open LocalMachine\Disallowed (ReadOnly) | :white_check_mark: | `CryptographicException` | :white_check_mark: |
|
||||
| Open LocalMachine\Disallowed (ReadWrite) | :white_check_mark: | `CryptographicException` | `CryptographicException` |
|
||||
| Open LocalMachine\Disallowed (ExistingOnly) | :white_check_mark: | `CryptographicException` | :white_check_mark: (if ReadOnly) |
|
||||
| Open non-existant store (ExistingOnly) | `CryptographicException` | `CryptographicException` | `CryptographicException` |
|
||||
| Open CurrentUser non-existant store (ReadWrite) | :white_check_mark: | :white_check_mark: | `CryptographicException` |
|
||||
| Open LocalMachine non-existant store (ReadWrite) | :white_check_mark: | `CryptographicException` | `CryptographicException` |
|
||||
|
||||
On Linux stores are created on first-write, and no user stores exist by default, so opening CurrentUser\My with ExistingOnly may fail.
|
||||
|
||||
On Linux the Disallowed store is not used in chain building, and attempting to add contents to it will result in a `CryptographicException` being thrown.
|
||||
A `CryptographicException` will be thrown when opening the Disallowed store on Linux if it has already acquired contents.
|
||||
|
||||
The LocalMachnie\Root store on Linux is an interpretation of the CA bundle in the default path for OpenSSL.
|
||||
The LocalMachine\Intermediate store on Linux is an interpretation of the CA bundle in the default path for OpenSSL.
|
||||
The CurrentUser\Intermediate store on Linux is used as a cache when downloading intermediate CAs by their Authority Information Access records on successful X509Chain builds.
|
||||
|
||||
On macOS the CurrentUser\My store is the user's default keychain (login.keychain, by default).
|
||||
The LocalMachine\My store is System.keychain.
|
||||
The CurrentUser\Root store on macOS is an interpretation of the SecTrustSettings results for the user trust domain.
|
||||
The LocalMachine\Root store on macOS is an interpretation of the SecTrustSettings results for the admin and system trust domains.
|
||||
The CurrentUser\Disallowed and LocalMachine\Disallowed stores are interpretations of the appropriate SecTrustSettings results for certificates whose trust is set to Always Deny.
|
||||
Keychain creation on macOS requires more input than is captured with the X509Store API, so attempting to create a new store will fail with a `PlatformNotSupportedException`.
|
||||
If a keychain is opened by P/Invoke to SecKeychainOpen, the resulting `IntPtr` can be passed to `new X509Store(IntPtr)` to obtain a read/write-capable store (subject to the current user's permissions).
|
||||
|
||||
### X509Chain
|
||||
|
||||
macOS does not support Offline CRL utilization, so `X509RevocationMode.Offline` is treated as `X509RevocationMode.Online`.
|
||||
macOS does not support a user-initiated timeout on CRL/OCSP/AIA downloading, so `X509ChainPolicy.UrlRetrievalTimeout` is ignored.
|
||||
|
||||
OCSP is not supported on Linux, CRLs are required for `X509RevocationMode.Offline` or `X509RevocationMode.Online`.
|
||||
@@ -137,7 +137,40 @@ Use it to pass extra msbuild properties, in this case to ignore tests ignored in
|
||||
build-tests -- /p:WithoutCategories=IgnoreForCI
|
||||
```
|
||||
|
||||
### Building individual CoreFx DLLs
|
||||
### Building individual libraries
|
||||
|
||||
**Note**: Before working on individual projects or test projects you **must** run `build` from the root once before beginning that work. It is also a good idea to run `build` whenever you pull a large set of unknown changes into your branch.
|
||||
|
||||
Similar to building the entire repo with build.cmd/sh in the root you can build projects based on our directory structure by passing in the directory. We also support
|
||||
shortcuts for libraries so you can omit the root src folder from the path. When given a directory we will build all projects that we find recursively under that directory.
|
||||
|
||||
**Examples**
|
||||
|
||||
- Build all projects for a given library (ex: System.Collections) including running the tests
|
||||
```
|
||||
build System.Collections
|
||||
```
|
||||
or
|
||||
```
|
||||
build src\System.Collections
|
||||
```
|
||||
or
|
||||
```
|
||||
cd src\System.Collections
|
||||
..\..\build .
|
||||
```
|
||||
|
||||
- Build just the tests for a library project.
|
||||
```
|
||||
build src\System.Collections\tests
|
||||
```
|
||||
|
||||
- All the options listed above like framework and configuration are also supported (note they must be after the directory)
|
||||
```
|
||||
build System.Collections -framework:netfx -release
|
||||
```
|
||||
|
||||
### Building individual projects
|
||||
|
||||
**Note**: Before working on individual projects or test projects you **must** run `build` from the root once before beginning that work. It is also a good idea to run `build` whenever you pull a large set of unknown changes into your branch.
|
||||
|
||||
@@ -157,13 +190,19 @@ For libraries that have multiple build configurations the configurations will be
|
||||
**Examples**
|
||||
|
||||
- Build project for Linux for netcoreapp
|
||||
`msbuild System.Net.NetworkInformation.csproj /p:OSGroup=Linux`
|
||||
```
|
||||
msbuild System.Net.NetworkInformation.csproj /p:OSGroup=Linux
|
||||
```
|
||||
|
||||
- Build project for uap (not if trying to build on non-windows you also need to specify OSGroup=Windows_NT)
|
||||
`msbuild System.Net.NetworkInformation.csproj /p:TargetGroup=uap`
|
||||
```
|
||||
msbuild System.Net.NetworkInformation.csproj /p:TargetGroup=uap
|
||||
```
|
||||
|
||||
- Build release version of library
|
||||
`msbuild System.Net.NetworkInformation.csproj /p:ConfigurationGroup=Release`
|
||||
```
|
||||
msbuild System.Net.NetworkInformation.csproj /p:ConfigurationGroup=Release
|
||||
```
|
||||
|
||||
**Note:** If building in a non-Windows environment, call `<repo-root>/Tools/msbuild.sh` instead of just `msbuild`.
|
||||
|
||||
@@ -300,7 +339,7 @@ This attribute can be applied either to a test class (will disable all the tests
|
||||
```cs
|
||||
[SkipOnTargetFramework(TargetFrameworkMonikers frameworks, string reason)]
|
||||
```
|
||||
Use this attribute over test methods to skip tests only on the specific target frameworks. The reason parameter doesn't affect the traits but we rather always use it so that when we see this attribute we know why it is being skipped on that framework.
|
||||
Use this attribute over test methods to skip tests only on the specific target frameworks. The reason parameter doesn't affect the traits but we rather always use it so that when we see this attribute we know why it is being skipped on that framework.
|
||||
|
||||
If it needs to be skipped in multiple frameworks and the reasons are different please use two attributes on the same test so that you can specify different reasons for each framework.
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ Areas are tracked by labels area-* (e.g. area-System.Collections). Each area
|
||||
|-----------------------------------------------------------------------------------------------|------------------|-------------|
|
||||
| [area-Infrastructure](https://github.com/dotnet/corefx/labels/area-Infrastructure) | [@mellinoe](https://github.com/mellinoe), [@ericstj](https://github.com/ericstj), [@weshaggard](https://github.com/weshaggard) |Covers:<ul><li>Packaging</li><li>Build and test infra for CoreFX repo</li><li>VS integration</li></ul><br/> |
|
||||
| [area-Meta](https://github.com/dotnet/corefx/labels/area-Meta) | [@tarekgh](https://github.com/tarekgh) | Issues without clear association to any specific API/contract, e.g. <ul><li>new contract proposals</li><li>cross-cutting code/test pattern changes (e.g. FxCop failures)</li><li>project-wide docs</li></ul><br/> |
|
||||
| [area-Serialization](https://github.com/dotnet/corefx/labels/area-Serialization) | [@shmao](https://github.com/shmao), [@zhenlan](https://github.com/zhenlan) | Packages:<ul><li>System.Runtime.Serialization.Xml</li><li>System.Runtime.Serialization.Json</li><li>System.Private.DataContractSerialization</li><li>System.Xml.XmlSerialization</li></ul> Excluded:<ul><li>System.Runtime.Serialization.Formatters</li></ul> |
|
||||
| [area-Serialization](https://github.com/dotnet/corefx/labels/area-Serialization) | [@shmao](https://github.com/shmao), [@zhenlan](https://github.com/zhenlan) | Packages:<ul><li>System.Runtime.Serialization.Xml</li><li>System.Runtime.Serialization.Json</li><li>System.Private.DataContractSerialization</li><li>System.Xml.XmlSerializer</li></ul> Excluded:<ul><li>System.Runtime.Serialization.Formatters</li></ul> |
|
||||
| **System contract assemblies** | | |
|
||||
| [System.AppContext](https://github.com/dotnet/corefx/labels/area-System.AppContext) | [@AlexGhiondea](https://github.com/AlexGhiondea) | | |
|
||||
| [System.Buffers](https://github.com/dotnet/corefx/labels/area-System.Buffers) | [@safern](https://github.com/safern) | |
|
||||
@@ -57,7 +57,7 @@ Areas are tracked by labels area-* (e.g. area-System.Collections). Each area
|
||||
| [System.Console](https://github.com/dotnet/corefx/labels/area-System.Console) | [@ianhays](https://github.com/ianhays) | |
|
||||
| [System.Data](https://github.com/dotnet/corefx/labels/area-System.Data) | [@saurabh500](https://github.com/saurabh500), [@corivera](https://github.com/corivera) | |
|
||||
| [System.Data.SqlClient](https://github.com/dotnet/corefx/labels/area-System.Data.SqlClient) | [@saurabh500](https://github.com/saurabh500), [@corivera](https://github.com/corivera) | |
|
||||
| [System.Diagnostics](https://github.com/dotnet/corefx/labels/area-System.Diagnostics) | [@joperezr](https://github.com/dotnet/joperezr) | |
|
||||
| [System.Diagnostics](https://github.com/dotnet/corefx/labels/area-System.Diagnostics) | [@joperezr](https://github.com/joperezr) | |
|
||||
| [System.Diagnostics.Process](https://github.com/dotnet/corefx/labels/area-System.Diagnostics.Process) | [@Priya91](https://github.com/Priya91) | |
|
||||
| [System.Diagnostics.Tracing](https://github.com/dotnet/corefx/labels/area-System.Diagnostics.Tracing) | [@brianrob](https://github.com/brianrob), [@vancem](https://github.com/vancem), [@valenis](https://github.com/valenis)| Packages:<ul><li>System.Diagnostics.DiagnosticSource</li><li>System.Diagnostics.PerformanceCounter</li><li>System.Diagnostics.Tracing</li><li>System.Diagnostics.TraceSource</li></ul><br/> |
|
||||
| [System.DirectoryServices](https://github.com/dotnet/corefx/labels/area-System.DirectoryServices) | [@tquerec](https://github.com/tquerec) | |
|
||||
@@ -78,17 +78,17 @@ Areas are tracked by labels area-* (e.g. area-System.Collections). Each area
|
||||
| [System.Reflection](https://github.com/dotnet/corefx/labels/area-System.Reflection) | [@dnlharvey](https://github.com/dnlharvey), [@AtsushiKan](https://github.com/AtsushiKan) | |
|
||||
| [System.Reflection.Emit](https://github.com/dotnet/corefx/labels/area-System.Reflection.Emit) | [@dnlharvey](https://github.com/dnlharvey), [@AtsushiKan](https://github.com/AtsushiKan) | |
|
||||
| [System.Reflection.Metadata](https://github.com/dotnet/corefx/labels/area-System.Reflection.Metadata) | [@tmat](https://github.com/tmat), [@nguerrera](https://github.com/nguerrera) | |
|
||||
| [System.Resources](https://github.com/dotnet/corefx/labels/area-System.Resources) | [@ramarag](https://github.com/ramarag), [@tarekgh](https://github.com/tarekgh) | |
|
||||
| [System.Runtime](https://github.com/dotnet/corefx/labels/area-System.Runtime) | [@AlexGhiondea](https://github.com/AlexGhiondea), [@joperezr](https://github.com/dotnet/joperezr) | Included:<ul><li>System.Runtime.Serialization.Formatters</li><li>System.Runtime.InteropServices.RuntimeInfo</li><li>System.Array</li></ul>Excluded:<ul><li>Path -> System.IO</li><li>StopWatch -> System.Diagnostics</li><li>Uri -> System.Net</li><li>WebUtility -> System.Net</li></ul> |
|
||||
| [System.Runtime.CompilerServices](https://github.com/dotnet/corefx/labels/area-System.Runtime.CompilerServices) | [@AlexGhiondea](https://github.com/AlexGhiondea), [@joperezr](https://github.com/dotnet/joperezr) | |
|
||||
| [System.Runtime.Extensions](https://github.com/dotnet/corefx/labels/area-System.Runtime.Extensions) | [@AlexGhiondea](https://github.com/AlexGhiondea), [@joperezr](https://github.com/dotnet/joperezr) | |
|
||||
| [System.Resources](https://github.com/dotnet/corefx/labels/area-System.Resources) | [@tarekgh](https://github.com/tarekgh) | |
|
||||
| [System.Runtime](https://github.com/dotnet/corefx/labels/area-System.Runtime) | [@AlexGhiondea](https://github.com/AlexGhiondea), [@joperezr](https://github.com/joperezr) | Included:<ul><li>System.Runtime.Serialization.Formatters</li><li>System.Runtime.InteropServices.RuntimeInfo</li><li>System.Array</li></ul>Excluded:<ul><li>Path -> System.IO</li><li>StopWatch -> System.Diagnostics</li><li>Uri -> System.Net</li><li>WebUtility -> System.Net</li></ul> |
|
||||
| [System.Runtime.CompilerServices](https://github.com/dotnet/corefx/labels/area-System.Runtime.CompilerServices) | [@AlexGhiondea](https://github.com/AlexGhiondea), [@joperezr](https://github.com/joperezr) | |
|
||||
| [System.Runtime.Extensions](https://github.com/dotnet/corefx/labels/area-System.Runtime.Extensions) | [@AlexGhiondea](https://github.com/AlexGhiondea), [@joperezr](https://github.com/joperezr) | |
|
||||
| [System.Runtime.InteropServices](https://github.com/dotnet/corefx/labels/area-System.Runtime.InteropServices) | [@tijoytom](https://github.com/tijoytom), [@yizhang82](https://github.com/yizhang82) | Excluded:<ul><li>System.Runtime.InteropServices.RuntimeInfo</li></ul> |
|
||||
| [System.Security](https://github.com/dotnet/corefx/labels/area-System.Security) | [@bartonjs](https://github.com/bartonjs), [@steveharter](https://github.com/steveharter) | |
|
||||
| [System.Security](https://github.com/dotnet/corefx/labels/area-System.Security) | [@bartonjs](https://github.com/bartonjs), [@ianhays](https://github.com/ianhays) | |
|
||||
| System.ServiceModel | N/A | [dotnet/wcf](https://github.com/dotnet/wcf) |
|
||||
| [System.ServiceProcess](https://github.com/dotnet/corefx/labels/area-System.ServiceProcess) | [@Priya91](https://github.com/Priya91) | |
|
||||
| [System.Text.Encoding](https://github.com/dotnet/corefx/labels/area-System.Text.Encoding) | [@krwq](https://github.com/krwq), [@tarekgh](https://github.com/tarekgh) | Included:<ul><li>System.Text.Encoding**s**.Web</li></ul> |
|
||||
| [System.Text.RegularExpressions](https://github.com/dotnet/corefx/labels/area-System.Text.RegularExpressions) | [@Priya91](https://github.com/Priya91) | |
|
||||
| [System.Threading](https://github.com/dotnet/corefx/labels/area-System.Threading) | [@kouvel](https://github.com/kouvel), [@alexperovich](https://github.com/alexperovich) | |
|
||||
| [System.Threading](https://github.com/dotnet/corefx/labels/area-System.Threading) | [@kouvel](https://github.com/kouvel) | |
|
||||
| [System.Transactions](https://github.com/dotnet/corefx/labels/area-System.Transactions) | [@jimcarley](https://github.com/jimcarley), [@qizhanMS](https://github.com/qizhanMS), [@dmetzgar](https://github.com/dmetzgar) | |
|
||||
| [System.Xml](https://github.com/dotnet/corefx/labels/area-System.Xml) | [@sepidehMS](https://github.com/sepidehMS), [@krwq](https://github.com/krwq) | |
|
||||
| **Microsoft contract assemblies** | | |
|
||||
|
||||
@@ -10,7 +10,7 @@ All .NET Core assemblies are [strong-named](http://msdn.microsoft.com/en-us/libr
|
||||
## FAQ
|
||||
|
||||
### 1. Microsoft strong-names their assemblies, should I?
|
||||
For the most part, the majority of applications and libraries do not need strong-names. Strong-names are left over from previous eras of .NET where [sandboxing](http://en.wikipedia.org/wiki/Sandbox_(computer_security)) needed to differentiate between code that was trusted, versus code that was untrusted. However in recent years, sandboxing via AppDomains, especially to [isolate ASP.NET web applications] (http://support.microsoft.com/kb/2698981), is no longer guaranteed and is not recommended.
|
||||
For the most part, the majority of applications and libraries do not need strong-names. Strong-names are left over from previous eras of .NET where [sandboxing](http://en.wikipedia.org/wiki/Sandbox_(computer_security)) needed to differentiate between code that was trusted, versus code that was untrusted. However in recent years, sandboxing via AppDomains, especially to [isolate ASP.NET web applications](http://support.microsoft.com/kb/2698981), is no longer guaranteed and is not recommended.
|
||||
|
||||
However, strong-names are still required in some rare situations, most of which are called out on this page: [Strong-Named Assemblies](http://msdn.microsoft.com/en-us/library/wd40t7ad.aspx).
|
||||
|
||||
|
||||
Reference in New Issue
Block a user