【问题标题】:Moving project to another directory causes missing view将项目移动到另一个目录会导致缺少视图
【发布时间】:2018-06-07 13:51:12
【问题描述】:

我使用 dotnet cli 创建了一个项目,一切正常,直到我想为应用程序编写测试。
我创建了一个src 目录并将整个Web 项目移动到src 文件夹,之后我在一个名为tests 的文件夹中创建了测试项目。

我在测试项目中添加了对 Web 应用程序的引用,测试运行成功,但是当我使用 dotnet run 运行我的应用程序时,我收到以下错误:

Views 文件夹位于 src 目录以及包括 *.csproj 在内的所有其他文件中。

请在下面找到我的文件夹结构:

任何帮助将不胜感激。谢谢。

【问题讨论】:

  • 错误信息非常明确:在上述位置找不到任何名为 Index.cshtml 的文件。如果您将代码从 /Views/ 移动到 /src/Views,请移动整个项目。
  • 视图存在于src 文件夹中。
  • 好吧,所以您确实移动了它们,但现在找不到它们。您需要移动整个项目,而不仅仅是源代码。
  • 我需要一个解决方案,而不是简单地否决这个问题。
  • 我已经告诉你解决方案了:你需要移动整个项目。错误信息不是很清楚吗?您移动了文件但没有移动项目 (*.csproj)

标签: c# asp.net-core-mvc asp.net-core-2.0 dotnet-cli


【解决方案1】:

更新:

我知道你现在的问题是什么,在 launch.json 中更改

cwd": "${workspaceFolder}",

cwd": "${workspaceFolder}\\src",

这个和vs code有关,需要告诉它哪个文件夹是workspace
您的代码在 Visual Studio 上运行良好
另外,别忘了删除

products.Add("Error", null);

原帖:

不确定您当前的文件夹结构,但让我们以您的原始示例为例。

如果您只是将“Views”文件夹移动到 src 文件夹中,您可以在 Startup.cs 文件中添加以下内容:

    public void ConfigureServices(IServiceCollection services)
    {
        //..
        services.Configure<RazorViewEngineOptions>(o =>
        {
            for (int i = 0; i < o.ViewLocationFormats.Count; i++)
                o.ViewLocationFormats[i] = "/src" + o.ViewLocationFormats[i];
        });
    }

现在,如果您也移动了其他资源(css、图像),则必须更新对它们的所有引用。
我不明白为什么你应该偏离约定,创建一个新的干净项目,进行测试,看看你的项目有什么不同

【讨论】:

  • 在我问这个问题之前我已经尝试过了。您是否尝试在 VSCode 中设置项目?
  • @JohnKennedy,是的。那是我唯一的改变
  • 这行得通。我故意添加了这一行products.Add("Error", null);
猜你喜欢
  • 2019-02-19
  • 1970-01-01
  • 1970-01-01
  • 2015-07-23
  • 2018-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-20
相关资源
最近更新 更多