5 echo " $0 restore <project> [-s <source>] ..."
6 echo " $0 build <project> [-c <configuration>] ..."
7 echo " $0 pack <project> [-c <configuration>] [-v <version>] ..."
8 echo " $0 install <project> [-t <type>]"
23 until [ $n -ge $RETRY ]; do
31 if [ $RET -eq 0 ]; then
56 local CSPROJ=$1; shift
58 local PROJNAME=${CSPROJ%.*}
59 local PROJECT_JSON=$PROJNAME.project.json
60 if [ -f $PROJECT_JSON ]; then
61 run_nuget restore $PROJECT_JSON
63 run_xbuild $CSPROJ /p:Configuration=$CONFIGURATION $@
67 if $USE_DOTNET_CLI; then
69 [ -n "$SOURCE" ] && OPTS="$OPTS -s $SOURCE"
70 run_dotnet restore $PROJECT $OPTS $@
72 if [[ $PROJECT_TYPE == "dir" ]]; then
73 local PROJFILES=$(find $PROJECT -name "*.project.json")
74 for p in $PROJFILES; do
75 run_nuget restore $p $@
78 run_nuget restore $PROJECT $@
84 if $USE_DOTNET_CLI; then
85 cmd_restore # restore first
87 [ -n "$CONFIGURATION" ] && OPTS="$OPTS -c $CONFIGURATION"
88 [ -n "$VERSION" ] && OPTS="$OPTS /p:Version=$VERSION"
89 run_dotnet build $PROJECT $OPTS $@
91 if [[ $PROJECT_TYPE == "dir" ]]; then
92 local PROJFILES=$(find $PROJECT -name "*.csproj")
93 for p in $PROJFILES; do
96 elif [[ $PROJECT_TYPE == "sln" ]]; then
97 run_xbuild $PROJECT /p:Configuration=$CONFIGURATION $@
98 elif [[ $PROJECT_TYPE == "csproj" ]]; then
99 build_project $PROJECT $@
105 if $USE_DOTNET_CLI; then
107 [ -n "$CONFIGURATION" ] && OPTS="$OPTS -c $CONFIGURATION"
108 [ -n "$VERSION" ] && OPTS="$OPTS /p:Version=$VERSION"
109 run_dotnet pack $PROJECT $OPTS $@
111 local NUSPEC=($PROJECT)
112 if [ -d $PROJECT ]; then
113 NUSPEC=($(find $PROJECT -name "*.nuspec"))
115 for x in ${NUSPEC[@]}; do
116 run_nuget pack $x -Version $VERSION -Properties Configuration=$CONFIGURATION $@
126 if [[ $TYPE == "assembly" ]]; then
127 find $PROJECT/bin -name $PROJECT.dll -exec install -p -m 644 {} $DEST \;
128 elif [[ $TYPE == "nupkg" ]]; then
129 find . -name "$PROJECT.[0-9]*.nupkg" -exec install -p -m 644 {} $DEST \;
133 #########################################################################
137 while getopts "s:c:v:t:" o; do
139 s) SOURCE=${OPTARG} ;;
140 c) CONFIGURATION=${OPTARG} ;;
141 v) VERSION=${OPTARG} ;;
148 if [ $# -lt 2 ]; then
155 # Check whether the project can be built using dotnet-cli
158 if [ -f $PROJECT ]; then
159 if [[ $PROJECT == *".sln" ]]; then
161 VS_VERSION=$(grep -E "^VisualStudioVersion" $PROJECT | cut -f2 -d= | xargs)
162 if [[ $VS_VERSION == "15."* ]]; then
165 elif [[ $PROJECT == *".csproj" ]]; then
166 PROJECT_TYPE="csproj"
167 RET=$(grep "Microsoft.NET.Sdk" $PROJECT | wc -l)
168 if [ $RET -gt 0 ]; then
171 elif [[ $PROJECT == *".project.json" ]]; then
172 PROJECT_TYPE="project.json"
174 elif [ -d $PROJECT ]; then
176 RET=$(find $PROJECT -name "*.project.json" | wc -l)
177 if [ $RET -eq 0 ]; then
178 CSPROJS=$(find $PROJECT -name "*.csproj")
179 for p in $CSPROJS; do
180 RET=$(grep "Microsoft.NET.Sdk" $p | wc -l)
181 if [ $RET -gt 0 ]; then
189 # Disable telemetry of dotnet
190 export DOTNET_CLI_TELEMETRY_OPTOUT=1
192 # To build PCL projects ReferenceAssemblyRoot should be set.
193 # dotnet-cli will find reference assemblies for PCL in this path.
194 export ReferenceAssemblyRoot=/usr/lib/mono/xbuild-frameworks
197 echo "----------------------------------------------"
199 echo "PROJECT=$PROJECT"
200 echo "PROJECT_TYPE=$PROJECT_TYPE"
201 echo "USE_DOTNET_CLI=$USE_DOTNET_CLI"
202 echo "SOURCE=$SOURCE"
203 echo "CONFIGURATION=$CONFIGURATION"
204 echo "VERSION=$VERSION"
207 echo "----------------------------------------------"
210 restore) cmd_restore $@ ;;
211 build) cmd_build $@ ;;
213 install) cmd_install $@ ;;