簡體   English   中英

從 C# 中的相同 package 獲取位於 NuGet 包目錄中的文件路徑

[英]Get path of file located in NuGet package's directory from same package in C#

我有一個.NET Framework (4.7)解決方案,它引用了 NuGet package。 此 NuGet package 應從htmlxml文件讀取。 這些文件都位於包的文件夾(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM