Ограничить пользовательские цели MSBuild для файлов, выбранных в Visual Studio - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть небольшая настраиваемая цель MSBuild:

<ItemGroup>
   <Foo Include="file1.foo"/>
   <Foo Include="file2.foo"/>
   <Foo Include="file3.foo"/>
   ...
</ItemGroup>
<Target Name="Foo2Bar" Inputs="foo.config;@(Foo)" Outputs="%(Foo.Filename).bar">
   <Exec Command="path\to\script @(Foo) -o %(Foo.Filename).bar"/>
</Target>

Теперь я хочу иметь возможность выбрать один из *.foo -файлов в Visual Studio и запустить обработку только этого (например, нажав Ctrl F7 или щелкнув правой кнопкой мыши). в обозревателе решений -> Compile ). Кажется, что это устанавливает свойство $(SelectedFiles), но я не могу найти никакого полезного учебника или примера, как заставить это работать ...

1 Ответ

0 голосов
/ 02 ноября 2018

Ограничить пользовательскую цель MSBuild файлами, выбранными в Visual Studio

Если я вас правильно понимаю, вы хотите выбрать один из файлов *.foo для цели, если да, вы можете передать список как свойство, поэтому нам нужно преобразовать элемент в свойство:

<Target Name="BuildMigrationZip">
   <PropertyGroup>
      <FooProperty>@(Foo)</FooProperty>
   </PropertyGroup>

  <MSBuild Projects="$(MSBuildThisFile)" Targets="Foo2Bar"
           Properties="FilesToFoo=$(FooProperty)" />
</Target>

Затем, когда мы собираем этот файл с помощью командной строки MSBuild, мы можем передать свойство FooProperty:

msbuild.exe "YourCustomTargetFile" /p:FooProperty=file1.foo

Вы можете проверить эту ветку для более подробной информации.

Если я вас неправильно понял, пожалуйста, дайте мне знать бесплатно, я буду следить как можно скорее.

Надеюсь, это поможет.

...