相关疑难解决方法(0)

从.net核心中的appsettings.json获取价值

不知道我在这里缺少什么,但我无法从我的.net核心应用程序中的appsettings.json获取值.我的appsettings.json为:

{
    "AppSettings": {
        "Version": "One"
    }
}
Run Code Online (Sandbox Code Playgroud)

启动:

public class Startup
{
    private IConfigurationRoot _configuration;
    public Startup(IHostingEnvironment env)
    {
        _configuration = new ConfigurationBuilder()
    }
    public void ConfigureServices(IServiceCollection services)
    {
      //Here I setup to read appsettings        
      services.Configure<AppSettings>(_configuration.GetSection("AppSettings"));
    }
}
Run Code Online (Sandbox Code Playgroud)

模型:

public class AppSettings
{
    public string Version{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)

控制器:

public class HomeController : Controller
{
    private readonly AppSettings _mySettings;

    public HomeController(IOptions<AppSettings> settings)
    {
        //This is always null
        _mySettings = settings.Value;
    }
}
Run Code Online (Sandbox Code Playgroud)

_mySettings永远是空的.这里有什么我想念的吗?

c# asp.net-core-mvc asp.net-core

124
推荐指数
9
解决办法
16万
查看次数

如何将Assembly.CodeBase转换为C#中的文件系统路径?

我有一个项目,将模板存储在\TemplatesDLL和EXE旁边的文件夹中.

我想在运行时确定这个文件路径,但使用的技术可以在单元测试和生产中使用(我不想在NUnit中禁用阴影复制!)

Assembly.Location 是不好的,因为它在NUnit下运行时返回阴影复制程序集的路径.

Environment.CommandLine 也是有限的用途,因为在NUnit等人它返回NUnit的路径,而不是我的项目.

Assembly.CodeBase 看起来很有希望,但它是一个UNC路径:

file:///D:/projects/MyApp/MyApp/bin/debug/MyApp.exe
Run Code Online (Sandbox Code Playgroud)

现在我可以使用字符串操作将其转换为本地文件系统路径,但我怀疑有一种更简洁的方法可以将它隐藏在.NET框架中.有人知道这样做的推荐方法吗?

(如果UNC路径不是file:///URL,则抛出异常在此上下文中绝对正常)

.net c# nunit codebase

60
推荐指数
3
解决办法
2万
查看次数

如何将此文件加载到NUnit测试中?

我有以下IntegrationTest项目结构......

在此输入图像描述

如果我想使用测试数据126.txt中的NUnit Test,我怎么加载普通的txt文件的数据?

注意:文件是-linked-,我正在使用c#(如图所示).

欢呼:)

.net c# testing tdd nunit

40
推荐指数
4
解决办法
3万
查看次数

为什么AppDomain.CurrentDomain.BaseDirectory在asp.net应用程序中不包含"bin"?

我有一个像以下网站项目:

namespace Web
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            lbResult.Text = PathTest.GetBasePath();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

该方法PathTest.GetBasePath()在另一个项目中定义,如:

namespace TestProject
{
    public class PathTest
    {
        public static string GetBasePath() 
        {
            return AppDomain.CurrentDomain.BaseDirectory;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么...\Web\在将TestProject程序集编译到bin文件夹时显示它(换句话说,它应该显示...\Web\bin在我的想法中).

如果我修改了方法,我现在遇到了麻烦:

namespace TestProject
{
    public class FileReader
    {
        private const string m_filePath = @"\File.config";
        public static string Read() 
        {
            FileStream fs = null;
            fs = new FileStream(AppDomain.CurrentDomain.BaseDirectory + m_filePath,FileMode.Open, …
Run Code Online (Sandbox Code Playgroud)

c# asp.net .net-assembly

25
推荐指数
3
解决办法
5万
查看次数

使用Assembly vs AppDomain查找我的主要可执行文件的路径

我是.NET用户,我的目标就像找到主执行程序集(EXE文件)目录的绝对路径一样简单.

我有几个候选人:

  • Assembly.GetExecutingAssembly().CodeBase
  • Assembly.GetExecutingAssembly().Location
  • AppDomain.CurrentDomain.BaseDirectory

如果要通过.NET文档判断 - 我倾向于CodeBase.任何人都可以用比.NET文档更具体的术语来解释这三个问题吗?一个例子来证明这种差异?

.net directory exe path

24
推荐指数
4
解决办法
3万
查看次数

编写单元测试:如何以编程方式获取带有测试文件的文件夹

我在visual studio 2010中编写单元测试.
为了测试一些功能,我添加了一个带有testfiles的文件夹.
我需要以编程方式获取此文件夹,而不需要字符串中的硬路径.

该文件夹包含在 <projectDirectory>/TestFiles

我试过用AppDomain.CurrentDomain.BaseDirectory.这只有在我用resharper运行我的单元测试时才有效.
结果是<projectDirectory>/bin/debug这样我可以很容易地去TestFiles.

如果我使用visual studio运行测试,BaseDirectory是:
<sameFolderAsSolutionFile>\TestResults\<username>_<pcname> <datatime>\Out

我已将解决方案文件移至另一个文件夹.所以我的项目与我的解决方案文件不在同一个文件夹中.
例:
<sameFolderAsSolutionFile> = C:\SolutionFiles
<projectDirectory> = C:\Projects\MyProject

有人能告诉我如何在不使用硬编码字符串的情况下获取测试文件的路径吗?

编辑
我还没有找到解决方案.
Visual Studio正在使用另一个构建文件夹进行测试.因此,通常构建到bin文件夹中的所有内容都将构建到另一个文件夹中以进行测试.

我的TEMP-SOLUTION
我在我的测试项目中添加了一个App.config文件.在此配置文件中,我添加了一个包含测试文件所需路径的设置:

<appSettings>
  <add key="TestFiles" value="C:\Projects\MyProject\TestFiles"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud)

c# directory unit-testing mstest visual-studio

20
推荐指数
3
解决办法
3万
查看次数

C#如果删除应用程序文件后如何使应用程序继续运行

是否有可能使它即使在应用程序文件被删除后,应用程序一旦执行,仍将继续运行直到结束?

我有一个便携式控制台应用程序,它运行在可移动驱动器上,并希望它能够继续运行,即使驱动器被意外删除,这可能吗?

我看到http://www.codeproject.com/Articles/13897/Load-an-EXE-File-and-Run-It-from-Memory但它似乎不起作用.

c#

9
推荐指数
1
解决办法
751
查看次数

如何获取.EXE的文件名

可能重复:
获取当前程序集的路径
C#:如何获取代码所在程序集的路径?

使用VB 2008,如何从内部获取正在运行的.EXE的文件名?

编辑:这是一个控制台应用程序,所以Application.ExecutablePath将无法正常工作.

vb.net

8
推荐指数
1
解决办法
4万
查看次数

为什么我的.NET App不加载位于添加到PATH环境变量的文件夹中的程序集?

我有一个.Net应用程序,它使用几个.Net dll,这些dll位于PATH环境变量中包含的文件夹中,但是当我启动我的.Net App时如果失败并出现错误:

Could not load file or assembly 'FxDoc.dll, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d4261664821' or one of its dependencies. The system cannot find the file specified.

我已经阅读这些MSDN项Search Path Used by Windows to Locate a DLLDynamic-Link Library Search Order

哪个州:

Windows然后按以下顺序搜索DLL:

当前进程的可执行模块所在的目录.

当前目录.

Windows系统目录.GetSystemDirectory函数检索此目录的路径.

Windows目录.GetWindowsDirectory函数检索此目录的路径.

PATH环境变量中列出的目录.

我的问题是:

  1. 哪些因素可能导致此错误?
  2. 以上信息对.Net有效吗?

.net c# dll

8
推荐指数
1
解决办法
1万
查看次数

C#测试资源

我正在使用Microsoft Visual Studio Test Framework,我的一些测试需要一个xml文件作为输入.目前我已将它们放在我的TestProject中的Resource目录下,并通过"..\..\whatever"路径名称访问它们.我希望在使用测试资源文件时提供良好实践的建议,因为我希望在所有这些情况下重用我的测试 - 直接来自VS 2010 - 在我的服务器上构建过程中 - 在透明的持续集成环境中(和简单的方式.

c# unit-testing

7
推荐指数
1
解决办法
8558
查看次数