[英]Get path of file located in NuGet package's directory from same package in C#
我有一個.NET Framework (4.7)
解決方案,它引用了 NuGet package。 此 NuGet package 應從html
和xml
文件讀取。 這些文件都位於包的文件夾(NuGet 包)中,解決方案不需要它們,而只有 NuGet package 本身需要它們。
在運行使用上述 NuGet package 的解決方案時,如何參考這些文件?
我嘗試使用./
但這一切只是指向我的解決方案的根目錄。
我正在嘗試的實際調用是: File.ReadAllText(path)
。
我還嘗試將Copy to Output Directory
屬性以Copy always
並使用Build Action
as Content
。 例如,這是將這些文件復制到packages/<package name>/Content/*.html
中,不知何故我想我可以得到這個路徑,比如這里給出的解決方案: Getting the path of a nuget ZEFE90A8E604A7C840D788D
但是對於這樣一個看似簡單的任務,這對我來說似乎很復雜。 這樣做的干凈方法是什么?
編輯:重命名問題以指定在這種情況下設置資源不是一個選項,因為我在 NuGet package 中使用的某些功能正在請求文件路徑而不是資源。
如果這是您創建的 nuget package,則在運行時任何情況下都不應使用外部文件,如果需要,可以將其更改為嵌入式資源。
無論如何,在運行時我會得到.dll 保持這樣的文件夾:
var currentAssemblyName = Assembly.GetExecutingAssembly().GetName().Name;
var rootFolder = Assembly.GetExecutingAssembly().Location.Split(currentAssemblyName)[0];
編輯- 應該適用於 .NET 框架或 dotnet 核心
我的錯誤,要獲得 DLL 的真實路徑,您需要搜索程序集,因為ExecutingAssembly是從啟動 .exe 的位置
var assembly = AppDomain.CurrentDomain
.GetAssemblies()
.SingleOrDefault(assembly => assembly.GetName().Name == "my.awsome.nuget");
var location = assembly.Location;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.