‫۷ سال و ۹ ماه قبل، دوشنبه ۶ دی ۱۳۹۵، ساعت ۲۰:۴۵
پیرامون راه اندازی در dotnetcore :
1.چگونه فایل MyContextEntity را در یک dotnet core Web App  ایجاد کنیم ؟ که از IUnitOfWork استفاده کند؟
2.
DatabaseContext.tt   رو چطور می‌توان در dotnet core ایجاد کرد؟
‫۷ سال و ۹ ماه قبل، پنجشنبه ۱۸ آذر ۱۳۹۵، ساعت ۰۲:۱۷
با تنظیمات project.json :
{
  "dependencies": {
    "CoreCompat.System.Drawing": "1.0.0-beta006",
    "StructureMap.Microsoft.DependencyInjection": "1.2.0",
    "CacheManager.Core": "0.9.1",
    "CacheManager.Microsoft.Extensions.Caching.Memory": "0.9.1",
    "CacheManager.Serialization.Json": "0.9.1",
    "Newtonsoft.Json": "9.0.2-beta1",
    "Microsoft.AspNetCore.SpaServices": "1.0.0-beta-000019",
    "AutoMapper": "5.1.1",
    "EFSecondLevelCache.Core": "1.0.1",
    "Microsoft.AspNetCore.Diagnostics.Elm": "0.2.0",
    "Microsoft.AspNetCore.ResponseCompression": "1.0.0",
    "Microsoft.AspNetCore.Mvc": "1.1.0",
    "Microsoft.AspNetCore.Mvc.Localization": "1.1.0",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.1.0",
    "Microsoft.AspNetCore.Session": "1.1.0",
    "Microsoft.AspNetCore.Hosting": "1.1.0",
    "Microsoft.AspNetCore.Hosting.Server.Abstractions": "1.1.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.1.0",
    "Microsoft.AspNetCore.StaticFiles": "1.1.0",
    "Microsoft.Extensions.Configuration.FileExtensions": "1.1.0",
    "Microsoft.Extensions.Configuration.Json": "1.1.0",
    "Microsoft.Extensions.FileProviders.Embedded": "1.1.0",
    "Microsoft.Extensions.Logging.Console": "1.1.0",
    "Microsoft.Extensions.Logging.Debug": "1.1.0",
    "Microsoft.Net.Http.Headers": "1.1.0",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.1.0",
    "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4-final",
    "Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Design": {
      "version": "1.1.0-preview4-final",
      "type": "build"
    },
    "System.Globalization": "4.3.0",
    "System.IO": "4.3.0",
    "System.Linq": "4.3.0",
    "System.Reflection": "4.3.0",
    "System.Runtime": "4.3.0",
    "System.Runtime.Extensions": "4.3.0",
    "System.Runtime.WindowsRuntime": "4.3.0",
    "System.Text.RegularExpressions": "4.3.0",
    "System.Threading.Tasks": "4.3.0",
    "Microsoft.VisualStudio.Web.CodeGenerators.Mvc": {
      "version": "1.1.0-preview4-final",
      "type": "build"
    },
    "Elmah.Io.AspNetCore": "1.0.1-pre-24",
    "Elmah.Io.Extensions.Logging": "1.0.17-pre",
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
      "version": "1.1.0-preview4-final",
      "type": "build"
    }
  },
  "tools": {
    "Microsoft.EntityFrameworkCore.Tools.DotNet": {
      "version": "1.1.0-preview4-final",
      "imports": [
        "portable-net45+win8"
      ]
    },
    "Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Tools": {
      "version": "1.1.0-preview4-final"
    },
    "Microsoft.Extensions.SecretManager.Tools": "1.1.0-preview4-final",
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
      "version": "1.1.0-preview4-final",
      "imports": [
        "portable-net45+win8"
      ]
    },
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.1.0-preview4-final"
  },
  "frameworks": {
    "netcoreapp1.1": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.1.0"
        }
      },
      "imports": [
        "dnxcore50",
        "portable-net45+win8"
      ]
    }
  },
  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
    //"embed": "Views/**/*.cshtml,Areas/**/Views/**/*.cshtml",
    //"define": [ "DEBUG" ]
  },
  "runtimeOptions": {
    "configProperties": {
      "System.GC.Server": true
    }
  },
  "publishOptions": {
    "include": [
      "wwwroot",
      //"Views",
      //"Areas/**/Views",
      "appsettings.json",
      "web.config"
    ]
  },
  "configurations": {
    "Release": {
      "buildOptions": {
        "optimize": true,
        "platform": "anycpu"
      }
    }
  },
  "scripts": {
    "precompile": [
      //"dotnet bundle"
    ],
    "prepublish": [
      //"bower install"
    ],
    "postpublish": [
      "dotnet razor-precompile --configuration %publish:Configuration% --framework %publish:TargetFramework% --output-path %publish:OutputPath% %publish:ProjectPath%",
      "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%"
    ]
  }
}

پس از publish ، به نظر میرسد فایل ProjectName.PrecompiledViews.dll  به درستی تولید نمی‌شود (حجم برابر 0 کیلوبایت)

‫۷ سال و ۱۰ ماه قبل، سه‌شنبه ۹ آذر ۱۳۹۵، ساعت ۲۲:۴۱
این که یک فایل نهایی ساخته شود خیلی عالیه هست اما چگونه با مشکل مناقشه (Conflict) کدها مقابله کنیم و یا چه استاندارد و ساختاری رو برای استفاده از افزونه‌های تهیه شده جی کوئری در نظر بگیریم ؟ و چطور پس از فشرده سازی به یک فایل نهایی صحت عملکرد کدها را ارزیابی کنیم؟
‫۷ سال و ۱۰ ماه قبل، یکشنبه ۳۰ آبان ۱۳۹۵، ساعت ۲۳:۴۵
فایل project.json که بنده تنظیم کردم در DataLayer :

{
  "version": "1.0.0-*",
  "dependencies": {
    //.. other assemblies
    "CacheManager.Serialization.Json": "0.9.1",
    "EFSecondLevelCache.Core": "1.0.1",
    "Microsoft.AspNetCore.Diagnostics": "1.1.0",
    "Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "1.1.0",
    "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.1.0",
    "Microsoft.EntityFrameworkCore.InMemory": "1.1.0",
    "Microsoft.Extensions.Configuration.Binder": "1.1.0",
    "Microsoft.Extensions.Options": "1.1.0",
    "System.Linq": "4.3.0",
    "System.Reflection": "4.3.0",
    "Microsoft.EntityFrameworkCore": "1.1.0",
    "Microsoft.EntityFrameworkCore.Design": "1.1.0",
    "Microsoft.EntityFrameworkCore.SqlServer": "1.1.0",
    "Microsoft.EntityFrameworkCore.SqlServer.Design": "1.1.0",
    "Microsoft.Extensions.Configuration.Abstractions": "1.1.0",
    "NETStandard.Library": "1.6.1"
  },
  "tools": {
    "Microsoft.EntityFrameworkCore.Tools.DotNet": {
      "version": "1.2.0-preview4-22736",
      "imports": [
        "portable-net45+win8"
      ]
    }

  },
  "frameworks": {
    "netcoreapp1.1": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.1.0"
        }
      },
      "imports": [
        "dnxcore50",
        "portable-net45+win8"
      ]
    }
  }
}

  و نتیجه اینکه عدم شناسایی command‌های Migrations : (حتی بعد از بروزرسانی بسته‌ها - یکبار اقدام به بستن و باز کردن مجدد Solution انجام شد اما تاثیری نداشت)

مشکل در خط فرمان PMC (package Manager console) رفع نشده است اما با اجرای CMD.exe در مسیر پروژه DataLayer و با استفاده از دستور زیر عملیات Migrations به درستی عمل میکند : (اطلاعات بیشتر )

dotnet ef --startup-project ../Core1RtmEmptyTest/ migrations add InitialDatabase  

‫۷ سال و ۱۰ ماه قبل، یکشنبه ۳۰ آبان ۱۳۹۵، ساعت ۱۸:۰۲
مورد دیگه ای که وجود داره عدم اجرای دستورات Migration در PMC (package manager console) می‌باشد.

طبق بروزرسانی:
«در کل Solution عبارت Microsoft.EntityFrameworkCore.Tools را جستجو کرده و با نام جدید Microsoft.EntityFrameworkCore.Tools.DotNet جایگزین کنید





‫۷ سال و ۱۰ ماه قبل، یکشنبه ۳۰ آبان ۱۳۹۵، ساعت ۱۶:۳۹
بله کاملا حرف شما درسته مشکل : «توزیع بدون فایل Microsoft.AspNetCore.Hosting.dll انجام میشود.»

 از project.json پروژه بود که با اضافه کردن سه مورد زیر در dependencies مشکل برطرف گردید.

"Microsoft.AspNetCore.Hosting": "1.1.0",
"Microsoft.AspNetCore.Hosting.Server.Abstractions": "1.1.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.1.0",
‫۷ سال و ۱۰ ماه قبل، شنبه ۲۹ آبان ۱۳۹۵، ساعت ۱۹:۵۸
بله به این مورد برخورد کردم اما قبل از اینکه publish صورت گیرد خطای نسخه 1.0 رو دریافت خواهید کرد و باید اصطلاحی که شما فرمودید را اعمال و سپس توزیع کرد.
اما پس از اعمال این مورد هم مشکل برطرف نمیشه.
توزیع بدون فایل Microsoft.AspNetCore.Hosting.dll انجام میشود.
در نسخه قبلی 1.0 هم همینطور بوده که با کپی کردن فایل از مسیر هایی (که در نظر قبلی مشخص کردم ) به مسیر فایل‌های توزیع شده مشکل رفع میشد.
برای مثال فایل هایی مانند :
 Microsoft.AspNetCore.Hosting.Server.Abstractions.dll
Microsoft.AspNetCore.Server.IISIntegration.dll
هم نیاز به کپی در مسیر توزیع فایل‌های پروژه داشتند.
‫۷ سال و ۱۰ ماه قبل، شنبه ۲۹ آبان ۱۳۹۵، ساعت ۱۵:۵۶
پس از به‌روزرسانی و توزیع در IIS با خطای :
Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.AspNetCore.Hosting, Version=1.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified.
   at Sample1.Web.Program.Main(String[] args)
مواجه شدم.

و جهت رفع مشکل :


اما خطا همچنان پابرجاست.

پکیج هایی که باید نصب باشد :


و فایل Project.json:


{
  "dependencies": {
    "Sample1.DataLayer": "1.0.0-*",
    "Sample1.PrsLayer.SysB.UserMg": "1.0.0-*",
    "Sample1.PrsLayer.SysBase": "1.0.0-*",
    "Sample1.PrsLayer.SysS.Setting": "1.0.0-*",
    "Sample1.SrvLayer.SysB.UserMg": "1.0.0-*",
    "Sample1.SrvLayer.SysBase": "1.0.0-*",
    "Sample1.SrvLayer.SysS.Setting": "1.0.0-*",
    "CoreCompat.System.Drawing": "1.0.0-beta006",
    "Sample1.ExternalResources": "1.0.0-*",
    "Sample1.SrvLayer.SysA.BookMg": "1.0.0-*",
    "Sample1.SrvLayer.UploadService": "1.0.0-*",
    "Sample1.PrsLayer.SysA.BookMg": "1.0.0-*",
    "Sample1.IocConfig": "1.0.0-*",
    "Sample1.MapperConfig": "1.0.0-*",
    "Sample1.PrsLayer.SysU.UiMg": "1.0.0-*",
    "Sample1.SrvLayer.SysU.UiMg": "1.0.0-*",
    "Sample1.PrsLayer.SysI.SubscribeNewsletter": "1.0.0-*",
    "Sample1.SrvLayer.SysI.SubscribeNewsletter": "1.0.0-*",
    "Wangkanai.Detection": "1.0.0-*",
    "Wangkanai.Detection.Abstractions": "1.0.0-*",
    "Wangkanai.Detection.Device": "1.0.0-*",
    "Wangkanai.Detection.Engine": "1.0.0-*",
    "Wangkanai.Detection.Platform": "1.0.0-*",
    "Wangkanai.Detection.Browser": "1.0.0-*",
    "StructureMap.Microsoft.DependencyInjection": "1.2.0",
    "CacheManager.Core": "0.9.1",
    "CacheManager.Microsoft.Extensions.Caching.Memory": "0.9.1",
    "CacheManager.Serialization.Json": "0.9.1",
    "Newtonsoft.Json": "9.0.2-beta1",
    "Microsoft.AspNetCore.SpaServices": "1.0.0-beta-000019",
    "AutoMapper": "5.1.1",
    "EFSecondLevelCache.Core": "1.0.1",
    "Microsoft.AspNetCore.Diagnostics.Elm": "0.2.0",
    "Microsoft.AspNetCore.Mvc": "1.1.0",
    "Microsoft.AspNetCore.Mvc.Localization": "1.1.0",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.1.0",
    "Microsoft.AspNetCore.Session": "1.1.0",
    "Microsoft.AspNetCore.StaticFiles": "1.1.0",
    "Microsoft.Extensions.Configuration.FileExtensions": "1.1.0",
    "Microsoft.Extensions.Configuration.Json": "1.1.0",
    "Microsoft.Extensions.FileProviders.Embedded": "1.1.0",
    "Microsoft.Extensions.Logging.Console": "1.1.0",
    "Microsoft.Extensions.Logging.Debug": "1.1.0",
    "Microsoft.Net.Http.Headers": "1.1.0",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.1.0",
    "System.Globalization": "4.3.0",
    "System.IO": "4.3.0",
    "System.Linq": "4.3.0",
    "System.Reflection": "4.3.0",
    "System.Runtime": "4.3.0",
    "System.Runtime.Extensions": "4.3.0",
    "System.Runtime.WindowsRuntime": "4.3.0",
    "System.Text.RegularExpressions": "4.3.0",
    "System.Threading.Tasks": "4.3.0",
    "Microsoft.VisualStudio.Web.CodeGenerators.Mvc": {
      "version": "1.1.0-preview4-final",
      "type": "build"
    },
    "Elmah.Io.AspNetCore": "1.0.1-pre-24",
    "Elmah.Io.Extensions.Logging": "1.0.17-pre",
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
      "version": "1.1.0-preview4-final",
      "type": "build"
    }
  },
  "tools": {
    "Microsoft.EntityFrameworkCore.Tools.DotNet": {
      "version": "1.1.0-preview4-final",
      "imports": [
        "portable-net45+win8"
      ]
    },
    "Microsoft.Extensions.SecretManager.Tools": "1.1.0-preview4-final",
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
      "version": "1.1.0-preview4-final",
      "imports": [
        "portable-net45+win8"
      ]
    },
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.1.0-preview4-final"
  },
  "frameworks": {
    "netcoreapp1.1": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.1.0"
        }
      },
      "imports": [
        "dotnet5.6",
        "portable-net45+win8"
      ]
    }
  },
  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true,
    "embed": "Views/**/*.cshtml,Areas/**/Views/**/*.cshtml",
    "define": [ "DEBUG" ]
  },
  "runtimeOptions": {
    "configProperties": {
      "System.GC.Server": true
    }
  },
  "publishOptions": {
    "include": [
      "wwwroot",
      "Views",
      "Areas/**/Views",
      "appsettings.json",
      "web.config"
    ]
  },
  "configurations": {
    "Release": {
      "buildOptions": {
        "optimize": true,
        "platform": "anycpu"
      }
    }
  },
  "scripts": {
    "precompile": [
      //"dotnet bundle"
    ],
    "prepublish": [
      //"bower install"
    ],
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}
‫۷ سال و ۱۱ ماه قبل، چهارشنبه ۱۴ مهر ۱۳۹۵، ساعت ۱۰:۱۷
بازخوردها و خطاها پس از نصب :
بنده سرور مجازی 2008 رو مورد آزمایش قرار دادم :
با خطای 502.5 مواجه شدم


که طبق نکاتی که در لینک پایین تصویر وجود داشت :

Hosting bundle not installed or server not restarted

  • Browser: 502.3 Bad Gateway: There was a connection error while trying to route the request.
  • Application Log: Process ‘0’ failed to start. Port = PORT, Error Code = ‘-2147024894’.
  • ASP.NET Core Module Log: Log file created but empty 

و تغییری که در فایل webconfig جهت log کردن انجام دادم مورد زیر از توضیحات بالا مشاهده شد :
ASP.NET Core Module Log: Log file created but empty

که پس از Restart ویندوز سرور - مشکل خالی بودن فایل‌های لاگ برطرف شد و اینبار در فایل‌های لاگ با متن خطای زیر مواجه شدم:
 Failed to load the dll from [C:\Program Files\dotnet\host\fxr\1.0.1\hostfxr.dll], HRESULT: 0x80070057

در حال حاضر در صدد رفع این مشکل هستم.
‫۷ سال و ۱۲ ماه قبل، سه‌شنبه ۶ مهر ۱۳۹۵، ساعت ۰۸:۰۰
without Cacheable:

with Cacheable:

ساختار موجودیت در DomainLayer :

public class PublicMenu : BaseEntity
    {
        public PublicMenu()
        {
            SubMenus = new List<PublicMenu>();
        }

        public string Title { get; set; }
        public string Url { get; set; }
        public string Icon { get; set; }
        public bool IsShow { get; set; }

        public virtual PublicMenu Menu { set; get; }
        public int? MenuId { get; set; }
        public ICollection<PublicMenu> SubMenus { get; set; }
    }