На днях я видел это в файле проекта:
<ProjectReference Include="Foo\Bar\Baz.csproj">
<Project>{A GUID HERE}</Project>
<Name>Baz</Name>
<Private>False</Private> <!-- ??? -->
<ReferenceOutputAssembly>False</ReferenceOutputAssembly>
</ProjectReference>
Каждый узел в по- ProjectReference
видимому, сам объяснительный (указанный файл проект, GUID, имя для отображения в обозревателе решений, и следует ли или нет текущего проект ссылается на ссылочном проект) , за исключением Private
, и товаров общего проект MSBuild страница Безразлично» t задокументировать это значение. (Там есть Private
настройка документированы для , Reference
а не ProjectReference
- но у него есть Never
, Always
и PreserveNewest
настройки, а не истинные и ложные)
Что делает этот параметр?
visual-studio
msbuild
Билли Онил
источник
источник
ProjectReference
элемент распознается (по крайней мере) поддерживающей инфраструктурой C # и C ++ MSBuild; похоже, что в основном это обрабатывается вMicrosoft.Common.CurrentVersion.targets
файле.Ответы:
Private
Тег поддерживает пользовательское переопределение флажка «Копировать Local» в папке Visual Studio Ссылки. Это определяет, используется ли ссылка из GAC или будет ли скопирована указанная сборка в каталог сборки.Хотя я не могу найти никакой документации MSDN по этому поводу (удивление quelle), это очевидно из поведения и из комментария,Microsoft.Common.CurrentVersion.targets:1742
где он применяется:Это задокументировано в MSDN> Общие элементы проекта MSBuild и очевидно из поведения и из комментария, в
Microsoft.Common.CurrentVersion.targets:1742
котором оно применяется:источник
<Private>
отсутствует, то он не эквивалентенTrue
. Найдите «ошибку MSBuild CopyLocal». Например , см stackoverflow.com/questions/1132243msbuild\Reference.cs:949
<Private>
установлено значениеTrue
, MSBuild по-прежнему не включает ссылку в выходные данные, если она не используется приложением? Это текущее поведение, которое я получаю локально ...Я хочу просто заявить, что
<Private>false</Private>
(что вы можете применить кProjectReference
s) может не работать при использовании,<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="Publish" Properties="$(_MSBuildProperties)" />
и у проекта$(MSBuildProjectFullPath)
естьProjectReference
s, которые есть<None><CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory></None>
. Я прочитал исходный код https://github.com/dotnet/sdk/blob/master/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Publish.targets и нашел решение. Вам необходимо определить,_GetChildProjectCopyToPublishDirectoryItems=false
например:<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="Publish" Properties="TargetFramework=$(TargetFramework);_GetChildProjectCopyToPublishDirectoryItems=false" />
источник