summaryrefslogtreecommitdiff
path: root/csharp/BuildInstructions.md
blob: 53c2849d4a1ea521d9ae157f933764e3d4d814e9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# Building Ice for .NET

This page describes how to build and install Ice for .NET from source code using
Visual Studio. If you prefer, you can also download [binary distributions][1]
for the supported platforms.

## Build Requirements

### Operating Systems and Compilers

Ice for .NET was extensively tested using the operating systems and compiler
versions listed for our [supported platforms][2].

The build requires the [Ice Builder for Visual Studio][3], you must install
version 4.3.6 or greater to build Ice.

## Compiling Ice for .NET with Visual Studio

### Preparing to Build

The build system requires the `slice2cs` compiler from Ice for C++. If you have
not built Ice for C++ in this source distribution, refer to [C++ build instructions](../cpp/BuildInstructionsWindows.md).

### Building Ice for .NET

Open a Visual Studio command prompt and change to the `csharp` subdirectory:

    cd csharp

To build the Ice assemblies, services and tests, run

    MSBuild msbuild\ice.proj

It is also possible to build the test suite using the binary Nuget packages, use:

    MSbuild msbuild\ice.proj /p:ICE_BIN_DIST=all

Upon completion, the Ice assemblies are placed in the `Assemblies` subdirectory.

## Running the .NET Tests

Python is required to run the test suite. Additionally, the Glacier2 tests
require the Python module `passlib`, which you can install with the command:

    > pip install passlib

To run the tests, open a command window and change to the top-level directory.
At the command prompt, execute:

    > python allTests.py

If everything worked out, you should see lots of `ok` messages. In case of a
failure, the tests abort with `failed`.

## Targeting Managed Code

Ice invokes unmanaged code to implement the following features:

- Protocol compression
- Signal processing in the Ice.Application class

if you do not require these features and prefer that the Ice run time use only 
managed code, you can build using the `Debug-Managed` or `Release-Manage` 
configurations.

    MSBuild msbuild\ice.proj /p:Configuration=Release-Managed

## Nuget packages

To create a Nuget package for the distribution use the following command:

    MSbuild msbuild\ice.proj /t:NugetPack

This will create `zeroc.ice.net\zeroc.ice.net.nupkg`.

[1]: https://zeroc.com/download.html
[2]: https://doc.zeroc.com/display/Ice37/Supported+Platforms+for+Ice+3.7.0
[3]: https://github.com/zeroc-ice/ice-builder-visualstudio