- // The following commands are mutually exclusive.
- if (cmdOptionExists(argv, argv+argc, "--help")) {
- help(argv[0]);
- return 0;
- } else if (cmdOptionExists(argv, argv+argc, "--ni-system")) {
- createNiPlatform(flags);
- return 0;
- } else if (cmdOptionExists(argv, argv+argc, "--ni-dll")) {
- dllMode = true;
- } else if (cmdOptionExists(argv, argv+argc, "--ni-pkg")) {
- pkgMode = true;
- } else if (cmdOptionExists(argv, argv+argc, "--ni-dir")) {
- dirMode = true;
- } else if (cmdOptionExists(argv, argv+argc, "--ni-reset-system")) {
- removeNiPlatform();
- return 0;
- } else if (cmdOptionExists(argv, argv+argc, "--ni-reset-pkg")) {
- rmPkgMode = true;
- } else if (cmdOptionExists(argv, argv+argc, "--ni-pkg-dll")) {
- pkgDllMode = true;
- } else if (cmdOptionExists(argv, argv+argc, "--ni-regen-all-app")) {
- regenerateAppNI(flags);
- return 0;
- } else if (cmdOptionExists(argv, argv+argc, "--tac-regen-all")) {
- regenerateTACNI(flags);
- return 0;
- } else if (cmdOptionExists(argv, argv+argc, "--tac-restore-db")) {
- restoreTACDB();
- return 0;
- } else if (cmdOptionExists(argv, argv+argc, "--tac-disable-pkg")) {
- disableTacMode = true;
- } else if (cmdOptionExists(argv, argv+argc, "--tac-enable-pkg")) {
- enableTacMode = true;
- } else {
- help(argv[0]);
- return 0;
+ //sh-3.2# dotnettool --ibc-dir [ibcDirectory]
+ for (auto it = args.begin(); it != args.end(); ) {
+ if (*it == "--ibc-dir") {
+ it = args.erase(it);
+
+ std::string ibcFilePath = std::string(*it);
+ if (!isDirectoryExist(ibcFilePath)) {
+ fprintf(stderr, "IBC path is missing or not exist\n");
+ return -1;
+ }
+
+ setenv("COMPlus_IBCFileDir", const_cast<char *>(ibcFilePath.c_str()), 1);
+ setenv("COMPlus_UseIBCFile", const_cast<char *>("1"), 1);
+ } else {
+ ++it;
+ }