<!--

 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you under the Apache License, Version 2.0 (the
 "License"); you may not use this file except in compliance
 with the License.  You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing,
 software distributed under the License is distributed on an
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.

-->
<Project> 
  <PropertyGroup Label="NuGet Package Reference Versions">
    <Antlr3RuntimePackageVersion>3.5.1</Antlr3RuntimePackageVersion>
    <!-- LUCENENET TODO: When ICU4N is released to production,
        be sure to lock down the version range below. The resource
        files in Lucene.Net.ICU are not compatible with any other
        ICU version than 60.1!! This should only change if ICU4N
        is upgraded AND the resources in Lucene.Net.ICU are upgraded to match.
        Note that some of the files need to be generated.
        The resource files to sync include .nrm files, .brk files, and .rbbi files.
        They can be generated based off of the files here:
        https://github.com/apache/lucene-solr/tree/31d7ec7bbfdcd2c4cc61d9d35e962165410b65fe/lucene/analysis/icu/src/data/utr30
        Just make sure they are adjusted to the right version of ICU/Lucene.
    <ICU4NPackageVersion>[60.1,60.2)</ICU4NPackageVersion> -->
    <ICU4NPackageVersion>60.1.0-alpha.238</ICU4NPackageVersion>
    <ICU4NCollationPackageVersion>$(ICU4NPackageVersion)</ICU4NCollationPackageVersion>
    <ICU4NCurrencyDataPackageVersion>$(ICU4NPackageVersion)</ICU4NCurrencyDataPackageVersion>
    <ICU4NLanguageDataPackageVersion>$(ICU4NPackageVersion)</ICU4NLanguageDataPackageVersion>
    <ICU4NRegionDataPackageVersion>$(ICU4NPackageVersion)</ICU4NRegionDataPackageVersion>
    <ICU4NTransliteratorPackageVersion>$(ICU4NPackageVersion)</ICU4NTransliteratorPackageVersion>
    <J2NPackageVersion>2.0.0-beta-0007</J2NPackageVersion>
    <MicrosoftAspNetCoreHttpAbstractionsPackageVersion>1.0.3</MicrosoftAspNetCoreHttpAbstractionsPackageVersion>
    <MicrosoftAspNetCoreTestHostPackageVersion>1.0.3</MicrosoftAspNetCoreTestHostPackageVersion>
    <MicrosoftCodeAnalysisAnalyzersPackageVersion>2.9.8</MicrosoftCodeAnalysisAnalyzersPackageVersion>
    <MicrosoftCodeAnalysisCSharpWorkspacesPackageVersion>3.4.0</MicrosoftCodeAnalysisCSharpWorkspacesPackageVersion>
    <MicrosoftCodeAnalysisVisualBasicWorkspacesPackageVersion>3.4.0</MicrosoftCodeAnalysisVisualBasicWorkspacesPackageVersion>
    <MicrosoftCSharpPackageVersion>4.4.0</MicrosoftCSharpPackageVersion>
    <MicrosoftExtensionsDependencyModelPackageVersion>2.0.0</MicrosoftExtensionsDependencyModelPackageVersion>
    <MicrosoftNETTestSdkPackageVersion>16.2.0</MicrosoftNETTestSdkPackageVersion>
    <MorfologikFsaPackageVersion>2.1.6-beta-0005</MorfologikFsaPackageVersion>
    <MorfologikPolishPackageVersion>$(MorfologikFsaPackageVersion)</MorfologikPolishPackageVersion>
    <MorfologikStemmingPackageVersion>$(MorfologikFsaPackageVersion)</MorfologikStemmingPackageVersion>
    <MSTestTestFrameworkPackageVersion>2.0.0</MSTestTestFrameworkPackageVersion>
    <MSTestTestAdapterPackageVersion>$(MSTestTestFrameworkPackageVersion)</MSTestTestAdapterPackageVersion>
    <NETStandardLibrary16PackageVersion>1.6.1</NETStandardLibrary16PackageVersion>
    <NETStandardLibrary20PackageVersion>2.0.3</NETStandardLibrary20PackageVersion>
    <NewtonsoftJsonPackageVersion>10.0.3</NewtonsoftJsonPackageVersion>
    <NUnit3TestAdapterPackageVersion>3.13.0</NUnit3TestAdapterPackageVersion>
    <NUnitPackageVersion>3.9.0</NUnitPackageVersion>
    <OpenNLPNETPackageVersion>1.9.1</OpenNLPNETPackageVersion>
    <SharpZipLibPackageVersion>1.1.0</SharpZipLibPackageVersion>
    <SharpZipLibNETStandardPackageVersion>0.86.0.1</SharpZipLibNETStandardPackageVersion>
    <Spatial4nCorePackageVersion>0.4.1</Spatial4nCorePackageVersion>
    <Spatial4nCoreNTSPackageVersion>$(Spatial4nCorePackageVersion)</Spatial4nCoreNTSPackageVersion>
    <SystemCollectionsNonGenericPackageVersion>4.3.0</SystemCollectionsNonGenericPackageVersion>
    <SystemCollectionsSpecializedPackageVersion>4.3.0</SystemCollectionsSpecializedPackageVersion>
    <SystemComponentModelPrimitivesPackageVersion>4.3.0</SystemComponentModelPrimitivesPackageVersion>
    <SystemDiagnosticsProcessPackageVersion>4.3.0</SystemDiagnosticsProcessPackageVersion>
    <SystemDiagnosticsStackTracePackageVersion>4.3.0</SystemDiagnosticsStackTracePackageVersion>
    <SystemDiagnosticsTraceSourcePackageVersion>4.3.0</SystemDiagnosticsTraceSourcePackageVersion>
    <SystemGlobalizationExtensionsPackageVersion>4.3.0</SystemGlobalizationExtensionsPackageVersion>
    <SystemGlobalizationPackageVersion>4.3.0</SystemGlobalizationPackageVersion>
    <SystemIOMemoryMappedFilesPackageVersion>4.3.0</SystemIOMemoryMappedFilesPackageVersion>
    <SystemNetNameResolutionPackageVersion>4.3.0</SystemNetNameResolutionPackageVersion>
    <SystemNetPrimitivesPackageVersion>4.3.0</SystemNetPrimitivesPackageVersion>
    <SystemNetSocketsPackageVersion>4.3.0</SystemNetSocketsPackageVersion>
    <SystemReflectionEmitPackageVersion>4.3.0</SystemReflectionEmitPackageVersion>
    <SystemReflectionEmitILGenerationPackageVersion>4.3.0</SystemReflectionEmitILGenerationPackageVersion>
    <SystemReflectionTypeExtensionsPackageVersion>4.3.0</SystemReflectionTypeExtensionsPackageVersion>
    <SystemRuntimeInteropServicesRuntimeInformationPackageVersion>4.3.0</SystemRuntimeInteropServicesRuntimeInformationPackageVersion>
    <SystemTextEncodingCodePagesPackageVersion>4.3.0</SystemTextEncodingCodePagesPackageVersion>
    <SystemThreadingThreadPackageVersion>4.3.0</SystemThreadingThreadPackageVersion>
    <SystemThreadingThreadPoolPackageVersion>4.3.0</SystemThreadingThreadPoolPackageVersion>
    <SystemXmlXmlDocumentPackageVersion>4.3.0</SystemXmlXmlDocumentPackageVersion>
    <XUnitPackageVersion>2.3.1</XUnitPackageVersion>
    <XUnitRunnerVisualStudioPackageVersion>$(XUnitPackageVersion)</XUnitRunnerVisualStudioPackageVersion>
  </PropertyGroup>
</Project>