Как передать условие препроцессора в. NET Core - PullRequest
1 голос
/ 06 марта 2020

У меня есть некоторый тестовый код, использующий компиляцию условий, как показано ниже:

public class MyFixture : IDisposable
{
    public MyFixture()
    {
        #if UseMySqlForTesting 
             ... do A
        #else
             ... do B
        #endif
    }

, а также некоторые связанные файлы, если UseMySqlForTesting истинно:

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <IsPackable>false</IsPackable>
    <UseMySqlForTesting>true</UseMySqlForTesting>
  </PropertyGroup>

  ...
  <!-- copy the files if we use mysql, otherwise, don't copy them -->
  <ItemGroup Condition="$(UseMySqlForTesting)">
    <None Update="MySql.Test.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="other.configuration.files.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>

Теперь я хотел бы используйте dotnet test для проверки проекта.

Вопрос:

Существует ли такой подход:

dotnet test /p:UseMySqlForTesting=false
dotnet test /p:UseMySqlForTesting=true    

, с помощью которого он может проверить ветвь #if или #else автоматически, а также при необходимости скопировать соответствующие файлы?

...