我正在使用dotnet pack命令为以下场景创建 NuGet 包:
项目结构:
Project B
|----> Project A
Project A
|----> SomePackage
Run Code Online (Sandbox Code Playgroud)
我想创建一个包含ProjectB.dll、ProjectA.dll和SomePackage作为 NuGet 包依赖项的 NuGet 包。
为了包含为 NuGet 包(而不是包依赖项)的一部分,我使用了此处ProjectA.dll建议的以下解决方案。
在ProjectB.csproj:
<ProjectReference Include="ProjectA.csproj" PrivateAssets="all"/>
<PropertyGroup>
<TargetsForTfmSpecificBuildOutput>$(TargetsForTfmSpecificBuildOutput);CopyProjectReferencesToPackage</TargetsForTfmSpecificBuildOutput>
</PropertyGroup>
<Target Name="CopyProjectReferencesToPackage" DependsOnTargets="BuildOnlySettings;ResolveReferences">
<ItemGroup>
<!-- Filter out unnecessary files -->
<_ReferenceCopyLocalPaths Include="@(ReferenceCopyLocalPaths->WithMetadataValue('ReferenceSourceTarget', 'ProjectReference')->WithMetadataValue('PrivateAssets', 'All'))"/>
</ItemGroup>
<!-- Print batches for debug purposes -->
<Message Text="Batch for .nupkg: ReferenceCopyLocalPaths = @(_ReferenceCopyLocalPaths), ReferenceCopyLocalPaths.DestinationSubDirectory = %(_ReferenceCopyLocalPaths.DestinationSubDirectory) Filename = %(_ReferenceCopyLocalPaths.Filename) Extension = %(_ReferenceCopyLocalPaths.Extension)" …Run Code Online (Sandbox Code Playgroud) 我正在使用BenchmarkDotNet库进行性能检查,并且我想在使用基准类时注入参数。像这样的东西:
public class Program
{
public static void Main()
{
var benchmark1 = new BenchmarkWithParameter(100);
BenchmarkRunner.Run(benchmark1);
var benchmark2 = new BenchmarkWithParameter(200);
BenchmarkRunner.Run(benchmark2);
}
}
public class BenchmarkWithParameter
{
public BenchmarkWithParameter(int waitTime)
{
WaitTime = waitTime;
}
public int WaitTime { get; }
[Benchmark]
public void Run()
{
Thread.Sleep(WaitTime);
}
}
Run Code Online (Sandbox Code Playgroud)
有办法实现吗?
我知道我可以使用Params,ParamsSource和ArgumentsSource属性,但这意味着我需要为每个参数更改更改基准类,而不是注入不同的参数。
我的主要目标是编写一次基准测试类,并使用不同的参数多次使用它。