C# 获取位于NuGet包';C中相同包的s目录#

C# 获取位于NuGet包';C中相同包的s目录#,c#,nuget,.net-assembly,filepath,C#,Nuget,.net Assembly,Filepath,我有一个.netframework(4.7)解决方案,它引用了一个NuGet包。此NuGet包应从html和xml文件中读取。这些文件都位于包的文件夹(NuGet包)中,解决方案不直接需要它们,而只需要NuGet包本身 在运行使用上述NuGet包的解决方案时,如何引用这些文件 我尝试了/,但这只是指向我的解决方案的根目录 我正在尝试的实际调用是:File.ReadAllText(path) 我还尝试将文件的Copy to Output Directory属性设置为Copy always,并将Bu

我有一个
.netframework(4.7)
解决方案,它引用了一个NuGet包。此NuGet包应从
html
xml
文件中读取。这些文件都位于包的文件夹(NuGet包)中,解决方案不直接需要它们,而只需要NuGet包本身

在运行使用上述NuGet包的解决方案时,如何引用这些文件

我尝试了
/
,但这只是指向我的解决方案的根目录

我正在尝试的实际调用是:
File.ReadAllText(path)

我还尝试将文件的
Copy to Output Directory
属性设置为
Copy always
,并将
Build Action
用作
Content
。例如,这是在
包//Content/*.html
中复制这些文件,不知何故,我想我可以得到这个路径,比如这里给出的解决方案:

但对于我来说,这看起来很复杂,因为这是一项看似简单的任务。做这件事的干净方法是什么


编辑:重命名问题,指定在这种情况下设置资源不是选项,因为我在NuGet软件包中使用的某些函数请求的是文件路径而不是资源。

如果这是您创建的NuGet软件包,在运行时的任何情况下都不应使用外部文件!有人可以改变它,如果需要的话,添加它作为

无论如何,在运行时,我会得到.dll所在的文件夹,如下所示:

 var currentAssemblyName = Assembly.GetExecutingAssembly().GetName().Name;
 var rootFolder = Assembly.GetExecutingAssembly().Location.Split(currentAssemblyName)[0];
编辑-应适用于.NET Framework或dotnet core

我的错误是,要获取DLL的实际路径,您需要搜索程序集,因为ExecutingAssembly是从.exe启动的地方开始的

 var assembly = AppDomain.CurrentDomain
                          .GetAssemblies()
                          .SingleOrDefault(assembly => assembly.GetName().Name == "my.awsome.nuget");
 var location = assembly.Location; 

这是控制台应用程序还是web应用程序。净核心。NET Framework?很抱歉,忘了提到它是一个.NET Framework解决方案。您还可以在包的程序集中放置一个帮助函数,然后使用
assembly.GetCurrentAssembly()
。但是到目前为止,与使用嵌入式资源相比,几乎没有任何好处。另外,使用
Path.GetDirectoryName(assembly.Location)
getExecutionGasEmbly
可能比使用拆分更容易获得程序集目录,
GetCurrentAssembly
AppDomain.CurrentDomain.GetAssembly
都为我返回了解决方案的调试文件夹路径。获取资源对我来说不是一个选项,因为我有一些函数将路径作为参数而不是资源。是的,金块就在那里,如果发布应用程序,金块.dll就在发布文件夹下,那么问题出在哪里?