gpt4 book ai didi

c# - 当引用程序集构建为控制台应用程序时,MVC View get 出现编译错误 (CS0246)。当它构建为类库时 - 它工作正常

转载 作者:行者123 更新时间:2023-11-30 20:51:31 25 4
gpt4 key购买 nike

我有一个解决方案。第一个项目包含 Entity Framework 模型,输出类型是控制台应用程序。另一个项目是前端,asp.net mvc 5 应用程序,它具有第一个项目中实体的 CRUD View 。从第二个项目引用第一个项目,我也在web.config中添加了依赖程序集:

<dependentAssembly>
<assemblyIdentity name="VolLoader" publicKeyToken="null" />
</dependentAssembly>

但是当我访问使用来自该程序集的实体的 View 时,出现 View 编译错误:

Compiler Error Message: CS0246: The type or namespace name 'VolLoader' could not be found (are you missing a using directive or an assembly reference?)

Source Error:



Line 29:
Line 30:
Line 31: public class _Page_Views_JobMon_Index_cshtml : System.Web.Mvc.WebViewPage<IEnumerable<VolLoader.Data.JobToWatch>> {
Line 32:
Line 33: #line hidden

将 namespace () 添加到 views 文件夹中的 web.config 会导致每个 View 出现编译错误。

程序集被复制到输出。

但是当我将第一个项目的输出类型更改为类库时,它起作用了,没有编译错误。我不明白为什么?有没有人有想法?

最佳答案

我想我找到了为什么会这样。我不是 100% 确定,但我无法重新编译 system.web.dll 来证明这一点。我在 system.web.dll 中找到了这段代码:

namespace System.Web.Compilation
{
/// <summary>Provides a container for building an assembly from one or more virtual paths within an ASP.NET project.</summary>
public class AssemblyBuilder
......
}

第 381 行:

internal CompilerParameters GetCompilerParameters()
{
CompilerParameters compilerParameters = this._compilerType.CompilerParameters;
string text = this._tempFiles.TempDir;
if (this.CultureName != null)
{
text = Path.Combine(text, this.CultureName);
Directory.CreateDirectory(text);
compilerParameters.OutputAssembly = Path.Combine(text, this.OutputAssemblyName + ".resources.dll");
}
else
{
compilerParameters.OutputAssembly = Path.Combine(text, this.OutputAssemblyName + ".dll");
}

如您所见,它只需要 dll:

compilerParameters.OutputAssembly = Path.Combine(text, this.OutputAssemblyName + ".dll");

关于c# - 当引用程序集构建为控制台应用程序时,MVC View get 出现编译错误 (CS0246)。当它构建为类库时 - 它工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21616799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com