我正在尝试在 OSX 上的 Jetbrains Rider 中构建一个 .NET 项目。该项目通常在 Windows 机器上运行,但我试图让它在我的 OSX 机器上构建。作为让它运行的一部分,我需要将一个.bat
-file转换为一个.sh
我已经完成的 -file,它在命令行中运行时可以工作。
bash 脚本:
#!/usr/bin/env bash
ALMADIR="$PWD/Alma/Web/Views/SharedViews"
CROSSWORDDIR="$PWD/Crossword/Web/Views/SharedViews"
ARCHIVEDIR="$PWD/Archive/Web/Views/SharedViews"
ADMINDIR="$PWD/Admin/Web/Views/SharedViews"
if [ -L "$ALMADIR" ]; then
rm "$ALMADIR"
fi
ln -s "$PWD/Common/Web.Shared/Views" "$ALMADIR"
if [ -L "$CROSSWORDDIR" ]; then
rm "$CROSSWORDDIR"
fi
ln -s "$PWD/Common/Web.Shared/Views" "$CROSSWORDDIR"
if [ -L "$ARCHIVEDIR" ]; then
rm "$ARCHIVEDIR"
fi
ln -s "$PWD/Common/Web.Shared/Views" "$ARCHIVEDIR"
if [ -L "$ADMINDIR" ]; then
rm "$ADMINDIR"
fi
ln -s "$PWD/Common/Web.Shared/Views" "$ADMINDIR"
我知道这可以通过多种方式改进,但我试图保持简单而不是过于复杂。
我还在.csproj
文件中添加了一个条件,因此它将根据所使用的平台运行正确的文件:
<PropertyGroup Condition="'$(OS)' == 'Unix'">
<PreBuildEvent>$(ProjectDir)\..\..\RunPrerequisites.sh</PreBuildEvent>
</PropertyGroup>
<PropertyGroup Condition="'$(OS)' == 'Windows'">
<PreBuildEvent>$(ProjectDir)\..\..\RunPrerequisites.bat</PreBuildEvent>
</PropertyGroup>
这也可以正常工作,但脚本执行本身失败并出现以下错误:
Microsoft.Common.CurrentVersion.targets(1291, 5): [MSB3073] The command "MY_PATH_OBSCURED/Folder/Web/../../RunPrerequisites.sh" exited with code 1.
有什么想法可能会出错吗?我是否需要从.sh
-script 返回某些内容以使所有内容都了解它已完成或其他内容?.bat
-file 像往常一样工作正常。
谢谢!