- 1402/01/27
- 0
- 91
به اشتراک گذاری فایل ها در یک سولوژن بین چندین پلتفرم
سلام و درود
من یک پروژه ای دارم که در اون از چند پلتفرم استفاده میکنم. به صورت زیر
1- یک پروژه با .net Core MVC
2- یک پروژه با web form
3- یک پروژه با xamarin forms
همه اینها در یک سولوشن هستند. موردی که وجود داره این هست که میخوام یک سری فایل شامل عکس ، pdf، javascript و .... رو به صورت اشتراکی بین تمام پروژه ها قرار بدم.
به طور مثال یک فولدر برای تصاویر محصولات وجود داره و تصویر هر محصول طبق دسته بندی اش از فولدر مربوطه طبق آدرسی که در DBمشخص شده لود بشه.
همه این فایل ها دسته بندی و فولدر بندی خودشون رو دارند. و نمیتونم همه رو داخل روت یک فولدر قرار بدم. با چه روشی میتونم این اشتراک گذاری رو انجام بدم
ممنون میشم راهنمایی کنید.
تشکر
- 1402/01/27
سلام و درود به شما،
برای اشتراک گذاری فایلها بین پروژههای مختلف در یک سولوشن، شما میتوانید از چند روش استفاده کنید. در اینجا دو روش معمول را برای شما توضیح میدهم:
-
استفاده از فولدر مشترک: شما میتوانید یک فولدر مشترک در سطح سولوشن ایجاد کنید و تمام فایلهای مورد نیاز را در آن قرار دهید. سپس به این فولدر از همهی پروژهها لینک دهید. برای این کار میتوانید از قابلیت "Add Existing Item" استفاده کنید و سپس در پنجرهی باز شده "Add As Link" را انتخاب کنید. به این ترتیب همهی پروژهها به همان فایلهای موجود در فولدر مشترک دسترسی خواهند داشت و در صورت نیاز به تغییر، فقط کافی است فایل مربوطه در فولدر مشترک را ویرایش کنید.
-
استفاده از پروژهی مشترک: میتوانید یک پروژهی کتابخانهی کلاس (.NET Standard Library) جدید در سطح سولوشن ایجاد کنید و تمام فایلهای مورد نیاز را در آن قرار دهید. سپس این پروژهی مشترک را به همهی پروژههای دیگر اضافه کنید. برای اضافه کردن پروژهی مشترک به پروژههای دیگر، از قسمت "Dependencies" پروژهی مورد نظر و سپس "Add Reference" استفاده کنید.
هر دو روش بالا مزایا و معایب خود را دارند. استفاده از فولدر مشترک روشی سادهتر است و به شما امکان میدهد فایلهای مورد نیاز را به راحتی در سطح سولوشن مدیریت کنید. اما استفاده از پروژهی مشترک، مزیتهای بیشتری دارد. به عنوان مثال:
-
به شما امکان میدهد کد مربوط به دسترسی به فایلها را در کتابخانهی مشترک قرار دهید، به این ترتیب تمام پروژهها از کدهای یکسانی برای دسترسی به فایلها استفاده میکنند و این کاهش تکرار کد را به همراه دارد.
-
پروژهی مشترک به عنوان یک واحد جداگانه قابل مدیریت است و شما میتوانید وابستگیها (Dependencies)، تنظیمات و دیگر جزئیات مربوط به این پروژه را به صورت جداگانه از بقیهی پروژهها مدیریت کنید.
-
شما میتوانید این پروژهی مشترک را به عنوان یک نوع تقسیمبندی کد برای پروژههای خود به کار ببرید و مسئولیتهای مربوط به دسترسی به فایلهای اشتراکی را به آن واگذار کنید. به این ترتیب میتوانید تمرکز بیشتری روی پروژههای خود داشته باشید.
در نهایت، روشی که برای اشتراک گذاری فایلها بین پروژههای مختلف در یک سولوشن انتخاب میکنید، به نیازهای خاص پروژههای شما و ترجیحات شما بستگی دارد. هر دو روش بالا میتوانند به شما کمک کنند تا به طور مؤثری فایلهای اشتراکی را مدیریت کنید و در پروژههای مختلف استفاده کنید.
- 1402/01/29
سلام و درود
ممنونم از پاسخ دهی سریع شما.
الف) من از روش یک میخواهم استفاده کنم به دلیل اینکه داخل سولوشن، پروژه از نوع web form نيز دارم. منتهی وقتی فولدر در سولوشن میسازم و میخواهم اون فولدر رو add as link بکنم اصلا نمایش داده نمیشه.
ب ) اگر یک فایل عکس رو با add as link به پروژه اضافه کنم آدرس دهی آن به صورت زیر میشه و زمان اجرا هم آن رو نمایش نمیده چون آدرس را پیدا نکرده!!
src="https://localhost:44352/../SourceProj/Source/Images/Stuffs/prod-4.jpg"
- 1402/01/30
سلام و درود مجدد
من موفق شدم فایلها و فولدر ها را به صورت As link اضافه کنم. مشکلی که الان باهاش مواجه ام آدرس دهی این فایل هاست. که فایل های Css و Imageو ... را شناسايي نميكنه.
تصاویر را نمایش نمیده و همچنین به attribute هاي داخل css فايل هم دسترسی ندارم.
- 1402/01/30
شاید استفاده از مسیر نسبی مشکل شما را برطرف کند.
برای استفاده از مسیر نسبی، شما میتوانید از مسیر فایل پروژه خود به عنوان پایه استفاده کنید. برای مثال، فرض کنید فایلهای مشترک شما در فولدر Shared در سطح سولوشن شما قرار دارد. در این صورت، شما میتوانید از مسیر زیر برای دسترسی به فایلهای مشترک استفاده کنید:
../Shared/Styles/style.css
در این مثال، ../ به معنای پدر بالایی مسیر فعلی است، بنابراین با استفاده از این مسیر نسبی، شما میتوانید به فولدر Shared در سطح سولوشن دسترسی پیدا کنید و سپس به فایلهای مشترک درون آن دسترسی داشته باشید.
استفاده از مسیر نسبی، در سیستمهای مختلف قابل اجرا است و برای تغییر مسیر فایلهای مشترک نیز به راحتی میتوانید فایلهای پروژه خود را به روزرسانی کنید.
اگر این روش برای شما مناسب نبود میتوانید از روش ذخیره داده ها در یک فایل dll استفاده نمایید.
شما میتوانید تمام فایلهای مشترک را در یک فایل DLL نگهداری کنید. برای این کار، شما باید ابتدا تمام فایلهای مورد نیاز خود را به عنوان منبع (Resource) به پروژهی خود اضافه کنید. سپس با استفاده از کتابخانهی مربوط به زبان برنامهنویسی خود، این فایلها را به صورت منبع درون یک فایل DLL جمعآوری کنید.
در .NET Framework و .NET Core، شما میتوانید از کلاس ResourceManager برای دسترسی به فایلهای منبع درون فایل DLL استفاده کنید. با استفاده از این کلاس، شما میتوانید به فایلهای منبع درون DLL دسترسی پیدا کنید و آنها را به عنوان فایلهای معمولی استفاده کنید.
لازم به ذکر است که استفاده از فایل DLL برای نگهداری فایلهای مشترک، به دلیل نیاز به کدنویسی بیشتر و پیچیدهتر، ممکن است باعث افزایش زمان توسعه پروژه شود. همچنین، این روش ممکن است مشکلات امنیتی را نیز به همراه داشته باشد.
----
برای دسترسی به فایلهای منبع درون فایل DLL، شما میتوانید از کلاس ResourceManager استفاده کنید. این کلاس به شما امکان میدهد تا به فایلهای منبع درون فایل DLL دسترسی پیدا کنید.
برای مثال، فرض کنید فایلهای منبع شما در فایل DLL به نام MyResources.dll قرار دارند و یک فایل CSS با نام style.css را درون آن ذخیره کردهاید. شما میتوانید با استفاده از کد زیر، این فایل CSS را به یک متغیر رشتهای بارگذاری کنید:
using System.Reflection;
using System.Resources;
// Create a resource manager for the DLL.
ResourceManager rm = new ResourceManager("MyNamespace.MyResources", Assembly.GetExecutingAssembly());
// Load the CSS file into a string variable.
string css = rm.GetString("style.css");
در این کد، MyNamespace.MyResources نام فایل منبع است که شامل فایلهای مورد نیاز شما میباشد. Assembly.GetExecutingAssembly() نیز برای بازیابی فایل DLL که در حال حاضر در حال اجرا است، استفاده میشود.
حال با استفاده از متغیر رشتهای css، شما میتوانید این فایل CSS را به عنوان یک استایل درون صفحات HTML خود استفاده کنید. برای این کار، شما میتوانید از تگ style استفاده کرده و متغیر css را به عنوان محتویات آن قرار دهید، مانند:
<style type="text/css">
<%= css %>
</style>
در این مثال، <%= css %> به معنای قرار دادن محتویات متغیر css درون تگ style میباشد. به این ترتیب، شما میتوانید به فایلهای منبع درون فایل DLL دسترسی پیدا کنید و آنها را در صفحات HTML یا در کدهای دیگر پروژه خود استفاده کنید.
پاسخی برای این باگ ارسال کنید
لطفا کدها را درون قطعه کد ارسال نمایید
برای ارسال پاسخ باید وارد حساب کاربری خود شوید
ورود به حساب کاربری