ошибка MSB4184: выражение «[System.IO.Path] :: GetDirectoryName ('')» не может быть вычислено. Путь не имеет юридической формы.
Я думаю, вы не предоставили всю информацию в файле proj.targets
и в этом файле, и вы, безусловно, используете функцию [System.IO.Path]::GetDirectoryName
для передачи значения в свойство в файле proj.targets
.
Если да, вам следует использовать этот тип:
<new property>$([System.IO.Path]::GetDirectoryName($(Property1)))</new Property>
Примечание :
Судя по сообщению об ошибке, свойство Property1 может быть не определено в текущем свойстве. Поэтому вы должны убедиться, что оно определено до new Property
.
Кроме того, вам лучше создать это новое свойство в новой PropertyGroup , и это позволит избежать некоторых проблем.
Так что попробуйте это в proj.targets
:
<PropertyGroup>
<Property1>xxx</Property1>
</PropertyGroup>
<PropertyGroup>
<new property>$([System.IO.Path]::GetDirectoryName($(Property1)))</new Property>
</PropertyGroup>
ни одно из сообщений в файле .targets не отображается в окне вывода VS. Итак, я никогда не видел «Копирование ресурсов в потребительское приложение!» или значение "@ (ExResources)"
Вы упаковали эту библиотеку, а затем установили ее в другом проекте, если да, то вам следует проверить вывод сборки в новом проекте, а не dotnet msbuild "D:\SSS\Proj.csproj" -v:diag
(проект библиотеки), а proj.targets
будет играть роль в новом проекте после установки пакета библиотеки. См. эту ссылку .
Примечание : build/<package_id>.targets
в механизме nuget автоматически импортируется в новый проект, который ссылается на пакет nuget и используется в новом проект вместо текущего проекта библиотеки.
Вдобавок , если вы хотите увидеть файл props.targets
в проекте библиотеки, вы должны вручную настроить файл в проект библиотеки и убедиться, что что у вас есть в этом <Import Project="xxxxx\build\props.targets" />
в текущем Proj.csproj
, и тогда ваш проект библиотеки может его использовать.
И вы можете использовать dotnet msbuild "D:\SSS\Proj.csproj" -v:diag
, чтобы увидеть это.
Надеюсь, это поможет вам, и если я неправильно понимаю вашу проблему, пожалуйста, дайте нам знать и предоставить любая подробная информация для нас, чтобы ее исследовать.