c# - asp.net 5/vnext 磁盘上没有 dll 的代码契约(Contract)

标签 c# code-contracts roslyn asp.net-core

Asp.Net vnext/5 使用 roslyn 进行即时编译,根本不生成任何程序集。大多数代码契约工具使用编译时代码转换将契约转换为运行时检查。

它将如何与 Asp.Net 5 一起工作?我喜欢在参数上使用 [NotNull] 等基于属性的契约,但如果没有编译步骤和程序集,所有这些都不起作用。

有什么想法吗?

最佳答案

构建时的默认行为如您所说,但如果您愿意,您仍然可以选择创建输出文件。

如果您使用命令行,请转到您的 project.json 文件的位置并使用 kpm build 命令。这将生成 Nuget 包,并将 dll 留在您所针对的每个框架的熟悉位置。

例如,如果您的目标是 aspnet50, 您最终可能会得到 \bin\Debug\YourProject.Version.nupkg\bin\Debug\aspnet50\YourProject.dll.

Nuget 包将包含您所针对的每个框架的必要程序集,并且您将在构建配置文件夹(例如 Debug)中为每个框架和 DLL 提供一个目录。

如果您使用的是 Visual Studio 2015 预览版,则可以更改项目的默认构建行为,以便在每次构建时都执行相同的操作。为此,只需右键单击解决方案资源管理器中的项目并选择 Properties。在 Build 选项卡上,有一个用于创建将具有 visual studio 的构建输出的复选框构建包并在每个构建上编写 DLL,就像您手动使用 kpm build 一样。

关于c# - asp.net 5/vnext 磁盘上没有 dll 的代码契约(Contract),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27425957/

相关文章:

c# - 从我的 asp.net mvc web 应用程序调用 asp.net 控制台应用程序

c# - 如何找到由 ""分隔的字符串中的最后一个单词? C#

c# - WPF 消息框显示错误消息

c# - 代码契约(Contract) : ContractClassFor when dealing with a generic abstract class?

c# - 如何使用 Roslyn MSBuildWorkspace 查找 C# 项目的 'obj' 目录?

c# - 如何在 LINQ-to-SQL 中生成 SQL COUNT(*) OVER (PARTITION BY {Column Name})?

c# - 是否保证在调用链式构造函数之前评估代码契约?

c# - 使用 Roslyn 获取程序集属性

c# - Roslyn - 查找所有符号

c# - 为构造函数参数设置契约