asp.Netcore 1.1プロジェクトはaspにアップグレードされた.Netcore 2.0 preview 2と正式版
22132 ワード
この2,3日aspをNetcore 1.1のプロジェクトはaspに移行した.Netcore 2.0 preview 2、このエッセイに記録しておきます.
プロジェクトにglobalがある場合.jsonファイルは、削除または変更する必要があります.Net 2.0 preview 2のsdkバージョン番号.
クラスライブラリプロジェクトの場合.csproj、TagetFrameworkをnetstandard 2に変更する必要があります.0、たとえば
に改心
ユニットテスト項目の場合、TargetFrameworkはnetcoreapp 2に変更する必要がある.0、たとえば
に改心
Webプロジェクトには、動くべき場所がたくさんあります.TargetFrameworkをnetcoreapp 2に変更する以外は.0、たとえば
に改心
必要なものは次のとおりです.
1)すべての対Microsoftを除去する.AspNetCoreの参照
Microsoftを追加AspNetCoreの参照
2)Authentication関連コードの修正 CookieAuthenticationOptionsのネーミングスペースをMicrosoftに変更しました.AspNetCore.Authentication.Cookies HttpContext.Authentication.SignInAsync()をHttpContextに変更する.SignInAsync()は、NuGetパッケージMicrosoftをインストールする必要があります.AspNetCore.Authentication.Abstraactions、名前空間Microsoftを参照.AspNetCore.Authentication . cookieAuthOptions.Value.AuthenticationSchemeをCookieAuthenticationDefaultsに変更しました.AuthenticationScheme
3)BundlerMinifierに対する修正
asp.Netcore 2.0 preview 2のdockerコンテナのbuild項目dotnet bundleを実行中に次のエラーが発生しました
これはnugetパッケージBundlerMinifierのためです.Coreはサポートしていません.net core 2.0 .githubでBundlerMinifierのソースコードにサインし(.net core 2.0のサポートが追加されました)、自分でパッケージします.
アップグレード時にPackageReferenceのBundlerMinifierをアップグレードするだけではありません.Core、DotNetCliToolReferenceのBundlerMinifierもアップグレードします.Core .
4)DataProtectionに対する修正
Microsoft.AspNetCore.DataProtection.RedisのPersistKeysToRedis()メソッドは機能しません.一時的な解決方法を変更する必要があります.
詳しくはPersistKeysToRedis not working in.NET Core 2.0 Preview 2 with Redis 0.1.2
5)Startupの修正構造関数の次のコードを除去
Configureメソッドの次のコードを除去
IConfigurationRootをIConfigurationに変更
6)プログラムの修正
Webプロジェクトのアップグレードが完了したら、すべてのNuGetパッケージをアップグレードし、すべてのAssemblyInfoを削除します.csファイル、アップグレード全体が完了しました.
【更新】
2017年8月15日、マイクロソフトが発表した.NET Core 2.0公式版、詳しくは.NET Core 2.0公式発表情報まとめ.
アップグレードの注意:
1)上記PersistKeysToRedis()に対する一時的な解決方法は不要
2)Authenticationに対する修正
から
に改心
3)ビュー.cshtmlの変数名はpageを使用できません.
プロジェクトにglobalがある場合.jsonファイルは、削除または変更する必要があります.Net 2.0 preview 2のsdkバージョン番号.
クラスライブラリプロジェクトの場合.csproj、TagetFrameworkをnetstandard 2に変更する必要があります.0、たとえば
<PropertyGroup>
<TargetFramework>netstandard1.6TargetFramework>
<AssemblyName>CNBlogs.Identity.ServiceAgentAssemblyName>
<PackageId>CNBlogs.Identity.ServiceAgentPackageId>
<NetStandardImplicitPackageVersion>1.6.1NetStandardImplicitPackageVersion>
<GenerateAssemblyConfigurationAttribute>falseGenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>falseGenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>falseGenerateAssemblyProductAttribute>
PropertyGroup>
に改心
<PropertyGroup>
<TargetFramework>netstandard2.0TargetFramework>
PropertyGroup>
ユニットテスト項目の場合、TargetFrameworkはnetcoreapp 2に変更する必要がある.0、たとえば
<PropertyGroup>
<TargetFramework>netcoreapp1.1TargetFramework>
<AssemblyName>CNBlogs.Identity.UnitTestsAssemblyName>
<PackageId>CNBlogs.Identity.UnitTestsPackageId>
<GenerateRuntimeConfigurationFiles>trueGenerateRuntimeConfigurationFiles>
<RuntimeFrameworkVersion>1.1.1RuntimeFrameworkVersion>
<GenerateAssemblyConfigurationAttribute>falseGenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>falseGenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>falseGenerateAssemblyProductAttribute>
PropertyGroup>
に改心
<PropertyGroup>
<TargetFramework>netcoreapp2.0TargetFramework>
PropertyGroup>
Webプロジェクトには、動くべき場所がたくさんあります.TargetFrameworkをnetcoreapp 2に変更する以外は.0、たとえば
<PropertyGroup>
<TargetFramework>netcoreapp1.1TargetFramework>
<PreserveCompilationContext>truePreserveCompilationContext>
<AssemblyName>CNBlogs.Identity.WebAssemblyName>
<OutputType>ExeOutputType>
<PackageId>CNBlogs.Identity.WebPackageId>
<RuntimeIdentifiers>win10-x64;win8-x64;osx.10.12-x64;ubuntu.14.04-x64RuntimeIdentifiers>
<PackageTargetFallback>$(PackageTargetFallback);dnxcore50;portable-net45+win10PackageTargetFallback>
<RuntimeFrameworkVersion>1.1.1RuntimeFrameworkVersion>
PropertyGroup>
に改心
<PropertyGroup>
<TargetFramework>netcoreapp2.0TargetFramework>
PropertyGroup>
必要なものは次のとおりです.
1)すべての対Microsoftを除去する.AspNetCoreの参照
<PackageReference Include="Microsoft.AspNetCore.Authentication" Version="1.1.2" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.Cookies" Version="1.1.2" />
<PackageReference Include="Microsoft.AspNetCore.DataProtection.Extensions" Version="1.1.2" />
<PackageReference Include="Microsoft.AspNetCore.DataProtection.Redis" Version="0.1.2" />
<PackageReference Include="Microsoft.AspNetCore.Diagnostics" Version="1.1.2" />
<PackageReference Include="Microsoft.AspNetCore.Hosting" Version="1.1.2" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.3" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="1.1.1" />
<PackageReference Include="Microsoft.AspNetCore.Server.IISIntegration" Version="1.1.2" />
<PackageReference Include="Microsoft.AspNetCore.Server.Kestrel" Version="1.1.2" />
<PackageReference Include="Microsoft.AspNetCore.Session" Version="1.1.2" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.1.2" />
Microsoftを追加AspNetCoreの参照
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0-preview2-final" />
2)Authentication関連コードの修正
3)BundlerMinifierに対する修正
asp.Netcore 2.0 preview 2のdockerコンテナのbuild項目dotnet bundleを実行中に次のエラーが発生しました
It was not possible to find any compatible framework version
The specified framework 'Microsoft.NETCore.App', version '1.1.0' was not found.
- Check application dependencies and target a framework version installed at:
/
- Alternatively, install the framework version '1.1.0'.
これはnugetパッケージBundlerMinifierのためです.Coreはサポートしていません.net core 2.0 .githubでBundlerMinifierのソースコードにサインし(.net core 2.0のサポートが追加されました)、自分でパッケージします.
アップグレード時にPackageReferenceのBundlerMinifierをアップグレードするだけではありません.Core、DotNetCliToolReferenceのBundlerMinifierもアップグレードします.Core .
4)DataProtectionに対する修正
Microsoft.AspNetCore.DataProtection.RedisのPersistKeysToRedis()メソッドは機能しません.一時的な解決方法を変更する必要があります.
services.Configure(o =>
{
o.XmlRepository = new RedisXmlRepository(() => redisConn.GetDatabase(), "DataProtection-Keys-Cnblogs");
});
詳しくはPersistKeysToRedis not working in.NET Core 2.0 Preview 2 with Redis 0.1.2
5)Startupの修正
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);
builder.AddEnvironmentVariables();
Configuration = builder.Build();
loggerFactory.AddSerilog();
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; set; }
6)プログラムの修正
public class Program
{
public static void Main(string[] args)
{
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args)
{
return WebHost.CreateDefaultBuilder(args)
.ConfigureLogging((context, logging) =>
{
logging.AddSerilog();
})
.UseStartup()
.Build();
}
}
Webプロジェクトのアップグレードが完了したら、すべてのNuGetパッケージをアップグレードし、すべてのAssemblyInfoを削除します.csファイル、アップグレード全体が完了しました.
【更新】
2017年8月15日、マイクロソフトが発表した.NET Core 2.0公式版、詳しくは.NET Core 2.0公式発表情報まとめ.
アップグレードの注意:
1)上記PersistKeysToRedis()に対する一時的な解決方法は不要
2)Authenticationに対する修正
から
services.AddCookieAuthentication(options =>
{
options.CookieHttpOnly = true;
options.CookieName = "xxx";
options.CookieDomain = "xxx";
options.LoginPath = "/account/signin";
options.LogoutPath = "/account/signout";
});
に改心
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddCookie(options =>
{
options.Cookie.HttpOnly = true;
options.Cookie.Name = "xxx";
options.Cookie.Domain = "xxx";
options.LoginPath = "/account/signin";
options.LogoutPath = "/account/signout";
});
3)ビュー.cshtmlの変数名はpageを使用できません.