繁体   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