我目前正在使用最新的Visual Studio 2017 Release Candidate来创建.Net Standard 1.6库.我正在使用xUnit对我的代码进行单元测试,并且想知道你是否仍然可以在VS2017中测试内部方法.
我记得你可以在VS2015中使用一行AssemblyInfo.cs类来使指定的项目能够看到内部方法
[assembly:InternalsVisibleTo("MyTests")]
Run Code Online (Sandbox Code Playgroud)
由于VS2017 .Net标准项目中没有AssemblyInfo.cs类,我想知道您是否还可以对内部方法进行单元测试?
我花了几个小时的时间试图找到一种在.NETCoreApp 1.1(Visual Studio 2017)中自动增加版本的方法.
我知道AssemblyInfo.cs是在文件夹中动态创建的: obj/Debug/netcoreapp1.1/
它不接受旧的方法:
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.*")]
如果我将项目设置为包我可以在那里设置版本,但这似乎用于构建AssemblyInfo.cs文件.
我的问题是,有没有人想出如何控制.NET Core(或.NETStandard)项目中的版本.
在新的Visual Studio 2017 .csproj项目文件中从AssemblyInfo放置InternalsVisibleTo的位置?
我想使用内部版本号附加我们的应用程序版本.例如,1.3.0.201606071
.
在AssemblyInfo中设置它时,我得到以下编译错误:
错误CS7034指定的版本字符串不符合所需的格式 - 主要[.minor [.build [.revision]]]
装配信息:
[assembly:System.Reflection.AssemblyFileVersionAttribute("1.0.0.201606071")]
[assembly:System.Reflection.AssemblyVersionAttribute("1.0.0.201606071")]
[assembly:System.Reflection.AssemblyInformationalVersionAttribute("1.0.0.201606071")]
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
以前,AssemblyInfo.cs
Visual Studio会自动处理文件以包含程序集范围的属性,如AssemblyVersion,AssemblyName等.
在.NET Core和ASP.NET Core中,project.json
负责保存大部分信息.
所以问题是:我是否需要使用该属性标记我的程序集?如果我不用该属性标记汇编,我可以获得什么陷阱?
我想internal
在ASP.NET Core项目中对具有保护级别的类进行单元测试.我已将AssemblyInfo.cs文件添加到测试项目的属性中:
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
[assembly: InternalsVisibleTo("xxx.xxx.xxxTests")]
Run Code Online (Sandbox Code Playgroud)
但是当我在我的测试中调用它时:
mockApplicationBuilder.Verify(y => y.UseMiddleware<HttpExceptionMiddleware>());
Run Code Online (Sandbox Code Playgroud)
我还是得到的
由于其保护级别,HttpExceptionMiddleware无法访问
为什么我的AssemblyInfo属性不起作用?
我的设置是我有一个包含2个文件夹(src和测试)的解决方案,这些文件夹分别包含src项目和文件夹根目录中的测试项目.AssemblyInfo.cs文件位于我的src项目的属性中.我是否需要在assemblyInfo.cs属性中指定测试项目的完整路径?
AssemblyInfo.cs
我的测试项目中也有一个,尽管我认为这是无关紧要的.
当我希望解决方案中的多个项目共享相同的程序集信息(主要是AssemblyVersion)时,我曾经使用过这里解释的tecnique:https://blogs.msdn.microsoft.com/jjameson/2009/04/03/shared- 装配信息,在视觉工作室项目/
现在我们正在研究.net核心和asp.net核心项目的解决方案,我们希望所有项目共享相同的AssemblyVersion,但现在每个项目的版本都存储在它的.csproj文件中(我们使用的是vs2017)
我尝试生成信息,<GenerateAssemblyProductAttribute>true</GenerateAssemblyProductAttribute>
但新文件是在构建时创建的
有没有办法集中这些信息,如"旧"SharedAssemblyInfo.cs方式?
在旧的 .NET 框架中,您可以设置[assembly: AssemblyVersion("1.0.*")]
并且编译器会自动增加版本。
使用 .NET 核心,我尝试了各种方法,但无法让它自动递增。
<Deterministic>False</Deterministic>
和。代码编译但版本保持不变<AssemblyVersion>1.0.*</AssemblyVersion>
<Version>1.0.*</Version>
标记。这实际上将产品版本设置为 1.0.*(带星号)。它似乎都不起作用。我错过了一些简单的东西吗?这只是一个标准的 .NET Core Web 项目。
我正在使用ASP.NET Core开发REST Api.我曾经使用包含常见属性(如AssemblyCompany,AssemblyCopyright,AssemblyTrademark和AssemblyVersion)的共享文件在我的解决方案中共享汇编信息.这样,解决方案中的所有项目都将使用相同的程序集信息属性进行编译.
在ASP.NET Core中,这些属性现在在project.json文件中定义.有没有办法以类似的方式分享这些属性?
我有一个 .NET 5.0 控制台应用程序。如何创建版本资源,然后在我的应用程序中显示该版本?
过去,我见过一个AssemblyInfo.cs文件。但我在我的新项目中没有看到类似的东西。
在dotnet框架项目中,在nunit中并行运行测试的一种便捷方法是在AssemblyInfo.cs文件中进行设置。
[程序集:Parallelizable(ParallelScope.Fixtures)]
但是,在.net core或.net标准中,不再有AssemblyInfo.cs文件。因此,如何能够将范围设置为仅在一个地方以net core或net standard并行,而不必在每个测试类文件上添加该装饰器?
.net-core ×7
c# ×7
assemblyinfo ×5
asp.net-core ×4
.net ×3
csproj ×2
.net-5 ×1
msbuild ×1
nunit ×1
unit-testing ×1
versioning ×1