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 cmd_nuspec_addfile() {
135 local TARGET=$1; shift
137 CHK_FILES=$(xmlstarlet sel -t -v "count(/package/files)" $PROJECT)
138 if [ $CHK_FILES -eq 0 ]; then
139 xmlstarlet ed -L -s "/package" -t elem -n "files" -v "" $PROJECT
142 xmlstarlet ed -L -s "/package/files" -t elem -n "file" -v "" \
143 -i "/package/files/file[last()]" -t attr -n "src" -v "$SRC" \
144 -i "/package/files/file[last()]" -t attr -n "target" -v "$TARGET" \
148 #########################################################################
152 while getopts "s:c:v:t:" o; do
154 s) SOURCE=${OPTARG} ;;
155 c) CONFIGURATION=${OPTARG} ;;
156 v) VERSION=${OPTARG} ;;
163 if [ $# -lt 2 ]; then
170 # Check whether the project can be built using dotnet-cli
173 if [ -f $PROJECT ]; then
174 if [[ $PROJECT == *".sln" ]]; then
176 VS_VERSION=$(grep -E "^VisualStudioVersion" $PROJECT | cut -f2 -d= | xargs)
177 if [[ $VS_VERSION == "15."* ]]; then
180 elif [[ $PROJECT == *".csproj" ]]; then
181 PROJECT_TYPE="csproj"
182 RET=$(grep "Microsoft.NET.Sdk" $PROJECT | wc -l)
183 if [ $RET -gt 0 ]; then
186 elif [[ $PROJECT == *".project.json" ]]; then
187 PROJECT_TYPE="project.json"
189 elif [ -d $PROJECT ]; then
191 RET=$(find $PROJECT -name "*.project.json" | wc -l)
192 if [ $RET -eq 0 ]; then
193 CSPROJS=$(find $PROJECT -name "*.csproj")
194 for p in $CSPROJS; do
195 RET=$(grep "Microsoft.NET.Sdk" $p | wc -l)
196 if [ $RET -gt 0 ]; then
204 # Disable telemetry of dotnet
205 export DOTNET_CLI_TELEMETRY_OPTOUT=1
207 # To build PCL projects ReferenceAssemblyRoot should be set.
208 # dotnet-cli will find reference assemblies for PCL in this path.
209 export ReferenceAssemblyRoot=/usr/lib/mono/xbuild-frameworks
212 echo "----------------------------------------------"
214 echo "PROJECT=$PROJECT"
215 echo "PROJECT_TYPE=$PROJECT_TYPE"
216 echo "USE_DOTNET_CLI=$USE_DOTNET_CLI"
217 echo "SOURCE=$SOURCE"
218 echo "CONFIGURATION=$CONFIGURATION"
219 echo "VERSION=$VERSION"
222 echo "----------------------------------------------"
225 restore) cmd_restore $@ ;;
226 build) cmd_build $@ ;;
228 install) cmd_install $@ ;;
229 nuspec_addfile) cmd_nuspec_addfile $@ ;;