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/