in lib/generator.js [2780:2834]
visitConsoleCSProj(uniqueUsed) {
let csprojPath = path.join(this.csprojOutputDir, (this.config.packageInfo.name || 'client') + '.csproj');
let json = {};
json = parse(fs.readFileSync(path.join(__dirname, 'files', 'consoleCsproj.tmpl')));
//填写包的基本信息
let propertyGroup = json.Project.PropertyGroup;
propertyGroup.forEach((property) => {
if (Object.hasOwn(property, 'RootNamespace')) {
property['RootNamespace'] = this.config.namespace;
}
});
let dependenciesClass = [];
if (uniqueUsed.includes('Newtonsoft.Json')) {
dependenciesClass.push('Newtonsoft.Json:13.0.1');
}
Object.keys(this.imports).forEach((key) => {
dependenciesClass.push(this.imports[key].release);
});
// 兜底依赖 Darabonba 的 1.0.0 版本
const teaVersion = '1.0.0';
dependenciesClass.push(`Darabonba:${teaVersion}`);
let currentItemGroup = {};
dependenciesClass.forEach((item, index) => {
let dependency = item.split(':');
currentItemGroup[dependency[0]] = dependency[1];
});
const newItemGroup = { ...currentItemGroup, ...this.packageManager };
//寻找用来写入的itemGroup, 避开有特殊参数的itemGroup
let itemGroup = {};
//添加或更新依赖包
Object.entries(newItemGroup || {}).forEach(([key, value]) => {
let writeReference = {};
itemGroup.PackageReference = itemGroup.PackageReference || [];
writeReference.$ = { 'Include': key, 'Version': value };
itemGroup.PackageReference.push(writeReference);
});
if (this.typedef) {
Object.keys(this.typedef).map(key => {
if (!this.typedef[key].package) {
return;
}
dependenciesClass.push(this.typedef[key].package);
});
}
json.Project.ItemGroup = itemGroup;
const builder = new xml2js.Builder();
const newCsproj = builder.buildObject(json);
fs.writeFileSync(csprojPath, Entities.decode(newCsproj));
}