Update for build pipeline changes (#64)

* Updates for modern build pipeline. Reorganize docs. Update Nuget package authoring.

* Update signing cert.
This commit is contained in:
Steve Molloy 2023-01-25 10:28:56 -08:00 коммит произвёл GitHub
Родитель 4a58f9926f
Коммит 402c076826
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
18 изменённых файлов: 165 добавлений и 93 удалений

Просмотреть файл

@ -4,6 +4,7 @@
<add key="disableSourceControlIntegration" value="true" />
</solution>
<packageSources>
<add key="nuget.org" value="https://www.nuget.org/api/v2/" />
<clear />
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
</packageSources>
</configuration>

Двоичные данные
.nuget/NuGet.exe

Двоичный файл не отображается.

Просмотреть файл

@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.27130.2036
# Visual Studio Version 17
VisualStudioVersion = 17.4.33213.308
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{58E8143E-86D8-4CA3-AAC3-1CF253D91207}"
EndProject
@ -21,7 +21,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SolutionItems", "SolutionIt
ProjectSection(SolutionItems) = preProject
tools\CosmosDBSessionStateProviderAsync.settings.targets = tools\CosmosDBSessionStateProviderAsync.settings.targets
tools\MicrosoftAspNetSessionState.settings.targets = tools\MicrosoftAspNetSessionState.settings.targets
Readme.md = Readme.md
tools\SessionStateModule.settings.targets = tools\SessionStateModule.settings.targets
tools\SqlSessionStateProviderAsync.settings.targets = tools\SqlSessionStateProviderAsync.settings.targets
tools\version.targets = tools\version.targets
@ -34,6 +33,14 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Packages", "src\packages\Pa
{4CFB2896-D5C1-4E96-A3DA-D57C58539209} = {4CFB2896-D5C1-4E96-A3DA-D57C58539209}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{3626D7CE-EDDB-4B2A-83E1-A1B69FDB874A}"
ProjectSection(SolutionItems) = preProject
docs\CosmosDBSessionStateProviderAsync.md = docs\CosmosDBSessionStateProviderAsync.md
Readme.md = Readme.md
docs\SessionStateModule.md = docs\SessionStateModule.md
docs\SqlSessionStateProviderAsync.md = docs\SqlSessionStateProviderAsync.md
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU

Просмотреть файл

@ -9,11 +9,9 @@ SessionStateModule is ASP.NETs default session-state handler which retrieves
## How to contribute
Information on contributing to this repo is in the [Contributing Guide](CONTRIBUTING.md).
## Replace the existing Session module in `web.config`
Before you can specify one of these custom providers. You need to remove the existing session state module from your web.config file. In addition, you must register the new module to take its place.
```
## How to use
1. Update your web.config to remove the old session state module and register the new one:
```xml
<system.webServer>
<modules>
<!-- remove the existing Session state module -->
@ -22,78 +20,17 @@ Before you can specify one of these custom providers. You need to remove the exi
</modules>
</system.webServer>
```
## Settings of the module and providers
+ #### Microsoft.AspNet.SessionState.SessionStateModule
1. appSetting *aspnet:RequestQueueLimitPerSession*
*How to use* - Add ```<add key="aspnet:RequestQueueLimitPerSession" value="[int]"/>``` into web.config under appSettings section.
*Description* - If multiple requests with same sessionid try to acquire sessionstate concurrently, asp.net only allows one request to get the sessionstate. This causes performance issues if there are too many requests with same sessionid and a request doesn't release sessionstate fast enough, as asp.net starts a timer for each of this request to acquire sessionstate every 0.5 sec by default. This is even worse, if out-proc sessionstate provider is used. Because this can potentially use most of the out-proc storage connection resources. With this setting, asp.net will ends the request after the number of concurrent requests with same sessionid reaches the configured number.
2. appSetting *aspnet:AllowConcurrentRequestsPerSession*
*How to use* - Add ```<add key="aspnet:AllowConcurrentRequestsPerSession" value="[bool]"/>``` into web.config under appSettings section.
*Description* - If multiple requests with same sessionid try to acquire sessionstate concurrently, asp.net only allows one request to get the sessionstate. With this setting, asp.net will allow multiple requests with same sessionid to acquire the sessionstate, but it doesn't guarantee thread safe of accessing sessionstate.
+ #### Microsoft.AspNet.SessionState.SqlSessionStateProviderAsync
The settings of this provider is located in the following configuration section in web.config.
```
<sessionState cookieless="false" regenerateExpiredSessionId="true" mode="Custom" customProvider="SqlSessionStateProviderAsync">
<providers>
<add name="SqlSessionStateProviderAsync" connectionStringName="DefaultConnection" UseInMemoryTable="[true|false]" MaxRetryNumber="[int]" RetryInterval="[int]"
type="Microsoft.AspNet.SessionState.SqlSessionStateProviderAsync, Microsoft.AspNet.SessionState.SqlSessionStateProviderAsync, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</providers>
2. Add one of the new providers to the `<sessionState>` section of your web.config:
```xml
<sessionState cookieless="false" regenerateExpiredSessionId="true" mode="Custom" customProvider="YourProviderName">
<providers>
<add name="YourProviderName" [providerOptions] type="Provider, ProviderAssembly, Version=, Culture=neutral, PublicKeyToken=" />
</providers>
</sessionState>
```
The specific settings available for the new session state module and providers are detailed in their respective doc pages.
1. *UseInMemoryTable* - Indicates whether to use Sql server 2016 In-Memory OLTP for sessionstate. You can find more details about using In-memory table for sessionstate [on this blog](https://blogs.msdn.microsoft.com/sqlcat/2016/10/26/how-bwin-is-using-sql-server-2016-in-memory-oltp-to-achieve-unprecedented-performance-and-scale/).
2. *MaxRetryNumber* - The maximum number of retrying executing sql query to read/write sessionstate data from/to Sql server. The default value is 10.
3. *RetryInterval* - The interval between the retry of executing sql query. The default value is 0.001 sec for in-memorytable mode. Otherwise the default value is 1 sec.
+ #### Microsoft.AspNet.SessionState.CosmosDBSessionStateProviderAsync
The settings of this provider is located in the following configuration section in web.config.
```
<sessionState cookieless="false" regenerateExpiredSessionId="true" mode="Custom" customProvider="CosmosDBSessionStateProviderAsync">
<providers>
<add name="CosmosDBSessionStateProviderAsync" cosmosDBEndPointSettingKey="cosmosDBEndPointSetting" cosmosDBAuthKeySettingKey="cosmosDBAuthKeySetting"
databaseId="[DataBaseId]" collectionId="[CollectionId]" offerThroughput="5000" connectionMode="Direct" connectionProtocol="Tcp" requestTimeout="5"
maxConnectionLimit="50" maxRetryAttemptsOnThrottledRequests="10" maxRetryWaitTimeInSeconds="10" preferredLocations="" partitionKeyPath="pKey"
partitionNumUsedByProvider="*"
type="Microsoft.AspNet.SessionState.CosmosDBSessionStateProviderAsync, Microsoft.AspNet.SessionState.CosmosDBSessionStateProviderAsync, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</providers>
</sessionState>
```
NOTE: For the best scalability, it is recommended to configure your CosmosDB provider with "wildcard" partitioning. For update-compatibility purposes, this is not the default. Please read about
*partitionKeyPath* and *partitionNumUsedByProvider* below.
1. *cosmosDBEndPointSettingKey* - The appsetting key name which points to a CosmosDB end point
2. *cosmosDBAuthKeySettingKey* - The appsetting key name which points to a CosmosDB auth key
3. *offerThroughput* - The offer throughput provisioned for a collection in measurement of Requests-per-Unit in the Azure DocumentDB database service. If the collection provided doesn't exist, the provider will create a collection with this offerThroughput.
4. *connectionMode* - Direct | Gateway
5. *connectionProtocol* - Https | Tcp
6. *requestTimeout* - The request timeout in seconds when connecting to the Azure DocumentDB database service.
7. *maxConnectionLimit* - maximum number of concurrent connections allowed for the target service endpoint in the Azure DocumentDB database service.
8. *maxRetryAttemptsOnThrottledRequests* - the maximum number of retries in the case where the request fails because the Azure DocumentDB database service has applied rate limiting on the client.
9. *maxRetryWaitTimeInSeconds* - The maximum retry time in seconds for the Azure DocumentDB database service.
10. *preferredLocations* - Sets the preferred locations(regions) for geo-replicated database accounts in the Azure DocumentDB database service. Use ';' to split multiple locations. e.g. "East US;South Central US;North Europe"
11. *partitionKeyPath* - The name of the key to use for logically partitioning the collection. This key name should be different from 'id' unless "wildcard" partitioning is being used.
12. *partitionNumUsedByProvider* - The number of partition can be used for sessionstate. This was designed with the thought that multiple Cosmos partitions would be an extra cost. CosmosDB as it stands today encourages as many diverse logical partitions as you can imagine, as more partitions allow for better horizontal scaling. Setting this to an integer value will effectively reduce the partition count to 32 or less, even if the specified value is much greater. This is a result of how session ID's were translated to partition ID's by this provider. ***It is now recommended to specify "\*" for this option if possible.*** This will reuse the full session ID for partitioning, allowing Cosmos maximum ability for horizontal scaling.
## Module and Providers contained here
- [Microsoft.AspNet.SessionState.SessionStateModule](docs/SessionStateModule.md)
- [Microsoft.AspNet.SessionState.SqlSessionStateProviderAsync](docs/SqlSessionStateProviderAsync.md)
- [Microsoft.AspNet.SessionState.CosmosDBSessionStateProviderAsync](docs/CosmosDBSessionStateProviderAsync.md)

Просмотреть файл

@ -0,0 +1,44 @@
# Microsoft.AspNet.SessionState.CosmosDBSessionStateProviderAsync
In .Net 4.6.2, asp.net enables developer plug in async version of SessionState module which is a good fit for the non-in-memory SessionState data store. This SessionState provider uses SQL Server as the data store and leverages async database operation to provide better scability.
Before you can specify this new async providers, you need to setup the new async SessionStateModule as [described here](https://github.com/aspnet/AspNetSessionState/blob/main/docs/SessionStateModule.md).
Then, register your new provider like so:
```xml
<sessionState cookieless="false" regenerateExpiredSessionId="true" mode="Custom" customProvider="CosmosDBSessionStateProviderAsync">
<providers>
<add name="CosmosDBSessionStateProviderAsync" cosmosDBEndPointSettingKey="cosmosDBEndPointSetting" cosmosDBAuthKeySettingKey="cosmosDBAuthKeySetting"
databaseId="[DataBaseId]" collectionId="[CollectionId]" offerThroughput="5000" connectionMode="Direct" connectionProtocol="Tcp" requestTimeout="5"
maxConnectionLimit="50" maxRetryAttemptsOnThrottledRequests="10" maxRetryWaitTimeInSeconds="10" preferredLocations="" partitionKeyPath="pKey"
partitionNumUsedByProvider="*"
type="Microsoft.AspNet.SessionState.CosmosDBSessionStateProviderAsync, Microsoft.AspNet.SessionState.CosmosDBSessionStateProviderAsync, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</providers>
</sessionState>
```
> **Note**
> For the best scalability, it is recommended to configure your CosmosDB provider with "wildcard" partitioning. For update-compatibility purposes, this is not the default. Please read about *partitionKeyPath* and *partitionNumUsedByProvider* below.
## Settings for Microsoft.AspNet.SessionState.CosmosDBSessionStateProviderAsync
1. *cosmosDBEndPointSettingKey* - The appsetting key name which points to a CosmosDB end point
2. *cosmosDBAuthKeySettingKey* - The appsetting key name which points to a CosmosDB auth key
3. *offerThroughput* - The offer throughput provisioned for a collection in measurement of Requests-per-Unit in the Azure DocumentDB database service. If the collection provided doesn't exist, the provider will create a collection with this offerThroughput.
4. *connectionMode* - Direct | Gateway
5. *connectionProtocol* - Https | Tcp
6. *requestTimeout* - The request timeout in seconds when connecting to the Azure DocumentDB database service.
7. *maxConnectionLimit* - maximum number of concurrent connections allowed for the target service endpoint in the Azure DocumentDB database service.
8. *maxRetryAttemptsOnThrottledRequests* - the maximum number of retries in the case where the request fails because the Azure DocumentDB database service has applied rate limiting on the client.
9. *maxRetryWaitTimeInSeconds* - The maximum retry time in seconds for the Azure DocumentDB database service.
10. *preferredLocations* - Sets the preferred locations(regions) for geo-replicated database accounts in the Azure DocumentDB database service. Use ';' to split multiple locations. e.g. "East US;South Central US;North Europe"
11. *partitionKeyPath* - The name of the key to use for logically partitioning the collection. This key name should be different from 'id' unless "wildcard" partitioning is being used.
12. *partitionNumUsedByProvider* - The number of partition can be used for sessionstate. This was designed with the thought that multiple Cosmos partitions would be an extra cost. CosmosDB as it stands today encourages as many diverse logical partitions as you can imagine, as more partitions allow for better horizontal scaling. Setting this to an integer value will effectively reduce the partition count to 32 or less, even if the specified value is much greater. This is a result of how session ID's were translated to partition ID's by this provider. ***It is now recommended to specify "\*" for this option if possible.*** This will reuse the full session ID for partitioning, allowing Cosmos maximum ability for horizontal scaling.

Просмотреть файл

@ -0,0 +1,28 @@
# Microsoft.AspNet.SessionState.SessionStateModule
SessionStateModule is ASP.NETs default session-state handler which retrieves session data and writes it to the session-state store. It already operates asynchronously when acquiring the request state, but it doesnt support async read/write to the session-state store. In the .NET Framework 4.6.2 release, we introduced a new interface named ISessionStateModule to enable this scenario. You can find more details on [this blog post](https://blogs.msdn.microsoft.com/webdev/2016/09/29/introducing-the-asp-net-async-sessionstate-module/).
Before you can specify one of these custom providers. You need to remove the existing session state module from your web.config file. In addition, you must register the new module to take its place.
```xml
<system.webServer>
<modules>
<!-- remove the existing Session state module -->
<remove name="Session" />
<add name="Session" preCondition="integratedMode" type="Microsoft.AspNet.SessionState.SessionStateModuleAsync, Microsoft.AspNet.SessionState.SessionStateModule, Version=1.1.0.0, Culture=neutral" />
</modules>
</system.webServer>
```
## Settings of Microsoft.AspNet.SessionState.SessionStateModule
1. appSetting *aspnet:RequestQueueLimitPerSession*
*How to use* - Add ```<add key="aspnet:RequestQueueLimitPerSession" value="[int]"/>``` into web.config under appSettings section.
*Description* - If multiple requests with same sessionid try to acquire sessionstate concurrently, asp.net only allows one request to get the sessionstate. This causes performance issues if there are too many requests with same sessionid and a request doesn't release sessionstate fast enough, as asp.net starts a timer for each of this request to acquire sessionstate every 0.5 sec by default. This is even worse, if out-proc sessionstate provider is used. Because this can potentially use most of the out-proc storage connection resources. With this setting, asp.net will ends the request after the number of concurrent requests with same sessionid reaches the configured number.
2. appSetting *aspnet:AllowConcurrentRequestsPerSession*
*How to use* - Add ```<add key="aspnet:AllowConcurrentRequestsPerSession" value="[bool]"/>``` into web.config under appSettings section.
*Description* - If multiple requests with same sessionid try to acquire sessionstate concurrently, asp.net only allows one request to get the sessionstate. With this setting, asp.net will allow multiple requests with same sessionid to acquire the sessionstate, but it doesn't guarantee thread safe of accessing sessionstate.

Просмотреть файл

@ -0,0 +1,20 @@
# Microsoft.AspNet.SessionState.SqlSessionStateProviderAsync
In .Net 4.6.2, asp.net enables developer plug in async version of SessionState module which is a good fit for the non-in-memory SessionState data store. This SessionState provider uses SQL Server as the data store and leverages async database operation to provide better scability.
Before you can specify this new async providers, you need to setup the new async SessionStateModule as [described here](https://github.com/aspnet/AspNetSessionState/blob/main/docs/SessionStateModule.md).
Then, register your new provider like so:
```xml
<sessionState cookieless="false" regenerateExpiredSessionId="true" mode="Custom" customProvider="SqlSessionStateProviderAsync">
<providers>
<add name="SqlSessionStateProviderAsync" connectionStringName="DefaultConnection" UseInMemoryTable="[true|false]" MaxRetryNumber="[int]" RetryInterval="[int]" type="Microsoft.AspNet.SessionState.SqlSessionStateProviderAsync, Microsoft.AspNet.SessionState.SqlSessionStateProviderAsync, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</providers>
</sessionState>
```
## Settings for Microsoft.AspNet.SessionState.SqlSessionStateProviderAsync
1. *UseInMemoryTable* - Indicates whether to use Sql server 2016 In-Memory OLTP for sessionstate. You can find more details about using In-memory table for sessionstate [on this blog](https://blogs.msdn.microsoft.com/sqlcat/2016/10/26/how-bwin-is-using-sql-server-2016-in-memory-oltp-to-achieve-unprecedented-performance-and-scale/).
2. *MaxRetryNumber* - The maximum number of retrying executing sql query to read/write sessionstate data from/to Sql server. The default value is 10.
3. *RetryInterval* - The interval between the retry of executing sql query. The default value is 0.001 sec for in-memorytable mode. Otherwise the default value is 1 sec.

Просмотреть файл

@ -23,6 +23,12 @@
<NuGetContent Include="Content\Net462\*">
<Destination>content\Net462</Destination>
</NuGetContent>
<NuGetContent Include="$(RepositoryRoot)\docs\CosmosDBSessionStateProviderAsync.md">
<Destination>docs\Readme.md</Destination>
</NuGetContent>
<NuGetContent Include="$(RepositoryRoot)\src\packages\assets\dotnet-icon.png">
<Destination>images\dotnet-icon.png</Destination>
</NuGetContent>
</ItemGroup>
<Import Project="$(RepositoryRoot)Tools\NuGetProj.targets"/>
</Project>

Просмотреть файл

@ -11,9 +11,11 @@
<summary>Async version CosmosDBSessionState provider</summary>
<language>en-US</language>
<projectUrl>http://www.asp.net/</projectUrl>
<iconUrl>http://go.microsoft.com/fwlink/?LinkID=288859</iconUrl>
<licenseUrl>http://www.microsoft.com/web/webpi/eula/net_library_eula_ENU.htm</licenseUrl>
<icon>images\dotnet-icon.png</icon>
<licenseUrl>https://licenses.nuget.org/MIT</licenseUrl>
<license type="expression">MIT</license>
<requireLicenseAcceptance>true</requireLicenseAcceptance>
<readme>docs\Readme.md</readme>
<tags>ASP.NET Async SessionState Provider</tags>
<dependencies>

Просмотреть файл

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory),Microsoft.Aspnet.SessionState.sln))\tools\MicrosoftAspNetSessionState.settings.targets" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration>
@ -12,11 +12,16 @@
<SccLocalPath>SAK</SccLocalPath>
<SccAuxPath>SAK</SccAuxPath>
<SccProvider>SAK</SccProvider>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<UseVSHostingProcess>false</UseVSHostingProcess>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
<ItemGroup>
<NuGetProject Include="SessionStateModule.nupkg\Microsoft.AspNet.SessionState.SessionStateModule.nuproj" />
<NuGetProject Include="SqlSessionStateProviderAsync.nupkg\Microsoft.AspNet.SessionState.SqlSessionStateProviderAsync.nuproj" />

Просмотреть файл

@ -23,6 +23,12 @@
<NuGetContent Include="Content\Net462\*">
<Destination>content\Net462</Destination>
</NuGetContent>
<NuGetContent Include="$(RepositoryRoot)\docs\SessionStateModule.md">
<Destination>docs\Readme.md</Destination>
</NuGetContent>
<NuGetContent Include="$(RepositoryRoot)\src\packages\assets\dotnet-icon.png">
<Destination>images\dotnet-icon.png</Destination>
</NuGetContent>
</ItemGroup>
<Import Project="$(RepositoryRoot)Tools\NuGetProj.targets"/>
</Project>

Просмотреть файл

@ -11,8 +11,11 @@
<summary>A SessionState module provides ability to plug in async SessionState provider.</summary>
<language>en-US</language>
<projectUrl>http://www.asp.net/</projectUrl>
<licenseUrl>http://www.microsoft.com/web/webpi/eula/net_library_eula_ENU.htm</licenseUrl>
<icon>images\dotnet-icon.png</icon>
<licenseUrl>https://licenses.nuget.org/MIT</licenseUrl>
<license type="expression">MIT</license>
<requireLicenseAcceptance>true</requireLicenseAcceptance>
<readme>docs\Readme.md</readme>
<tags>ASP.NET Async SessionState Module</tags>
</metadata>
</package>

Просмотреть файл

@ -23,6 +23,12 @@
<NuGetContent Include="Content\Net462\*">
<Destination>content\Net462</Destination>
</NuGetContent>
<NuGetContent Include="$(RepositoryRoot)\docs\SqlSessionStateProviderAsync.md">
<Destination>docs\Readme.md</Destination>
</NuGetContent>
<NuGetContent Include="$(RepositoryRoot)\src\packages\assets\dotnet-icon.png">
<Destination>images\dotnet-icon.png</Destination>
</NuGetContent>
</ItemGroup>
<Import Project="$(RepositoryRoot)Tools\NuGetProj.targets"/>
</Project>

Просмотреть файл

@ -14,8 +14,11 @@
<summary>Async version SqlSessionState provider</summary>
<language>en-US</language>
<projectUrl>http://www.asp.net/</projectUrl>
<licenseUrl>http://www.microsoft.com/web/webpi/eula/net_library_eula_ENU.htm</licenseUrl>
<icon>images\dotnet-icon.png</icon>
<licenseUrl>https://licenses.nuget.org/MIT</licenseUrl>
<license type="expression">MIT</license>
<requireLicenseAcceptance>true</requireLicenseAcceptance>
<readme>docs\Readme.md</readme>
<tags>ASP.NET Async SessionState Provider</tags>
</metadata>
</package>

Двоичные данные
src/packages/assets/dotnet-icon.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 6.8 KiB

Просмотреть файл

@ -26,7 +26,7 @@
Some of these are already set in each project's individual settings file.
-->
<BuildQuality Condition="'$(BuildQuality)' == ''">beta</BuildQuality>
<VersionStartYear Condition="'$(VersionStartYear)' == ''">2019</VersionStartYear>
<VersionStartYear Condition="'$(VersionStartYear)' == ''">2023</VersionStartYear>
<VersionMajor Condition="'$(VersionMajor)' == ''">1</VersionMajor>
<VersionMinor Condition="'$(VersionMinor)' == ''">0</VersionMinor>
<VersionRevision Condition="'$(VersionRevision)' == ''">0</VersionRevision>
@ -92,8 +92,8 @@
</Target>
<Target Name="SuperClean" AfterTargets="Clean" Condition="'$(MSBuildProjectExtension)' != '.nuproj'">
<RemoveDir Directories="$(OutputPath)" />
<RemoveDir Directories="$(IntermediateOutputRoot)" />
<RemoveDir Directories="$(TargetDir)" /> <!-- bin -->
<RemoveDir Directories="$(ProjectDir)$(BaseIntermediateOutputPath)" /> <!-- obj -->
</Target>
<Target Name="SuperCleanPackage" AfterTargets="Clean" Condition="'$(MSBuildProjectExtension)' == '.nuproj'">

Просмотреть файл

@ -184,7 +184,11 @@ Common build targets overwrites.
<RebuildDependsOn>Clean;Build</RebuildDependsOn>
</PropertyGroup>
<Target Name="BeforeBuild" />
<Target Name="BeforeBuild">
<ItemGroup>
<NuGetContent Remove="@(NuGetContent)"/>
</ItemGroup>
</Target>
<Target Name="Build" DependsOnTargets="$(BuildDependsOn)" />
<Target Name="AfterBuild" />

Просмотреть файл

@ -4,7 +4,7 @@
<Target Name="GetAssemblyFilesToSign" BeforeTargets="SignFiles" Condition="'$(MSBuildProjectExtension)' != '.nuproj' And '$(SignAssembly)' == 'true'">
<ItemGroup>
<FilesToSign Include="$(TargetPath)">
<Authenticode>Microsoft</Authenticode>
<Authenticode>Microsoft400</Authenticode>
<StrongName>MsSharedLib72</StrongName>
</FilesToSign>
</ItemGroup>