Tengo un proyecto antiguo en formato que no es de estilo SDK generado por Visual Studio. Contiene un evento posterior a la compilación en el que se usan $(ProjectDir) y $(TargetDir) .
Actualmente estoy transformando el proyecto en un nuevo proyecto de estilo SDK (archivo csproj ). Si solo convierto ese evento de compilación posterior en un Command Target Exec , obtengo errores. Después de prefijar el comando con echo , pude ver por qué: los valores $(ProjectDir) y $(TargetDir) estaban vacíos.
Descubrí que reemplazar $(ProjectDir) por $(MSBuildProjectDirectory)\ da el resultado deseado, pero ¿cuál es el equivalente de $(TargetDir) ?
Tenga en cuenta que no estoy usando Visual Studio para el nuevo proyecto de estilo SDK. Estoy usando el código de Visual Studio. Parece que Visual Studio establece valores para $(ProjectDir) / $(TargetDir) /others, pero Visual Studio Code no lo hace. Construyo mi proyecto usando dotnet build .
Parece que encontré la respuesta aquí :
El valor de TargetDir se calcula como la ruta absoluta completa de lo que especifique como ruta de salida para su proyecto, que se almacena en la propiedad OutputPath directamente en su archivo de proyecto (.CSPROJ, .VBPROJ, etc.).
Así que creo que $(TargetDir) sería $(MSBuildProjectDirectory)\$(OutputPath) .