यहां मेरा कोड है जो काम करता था:

MSBuildWorkspace msBuild = MSBuildWorkspace.Create();
Solution sln = await msBuild.OpenSolutionAsync(solutionPath);

लेकिन अब मुझे मिलता है:

int pr = sln.Projects.Count();//is 1 instead of 2.

तथा:

int docs = sln.Projects.First().Documents.Count();//is 0

क्या उन्होंने इसे फिर से बदल दिया है?

(यदि यह मायने रखता है, तो मुझे Solution फ़ील्ड आदि पर पुनरावृति करने के लिए और Renamer.RenameSymbolAsync।)

3
ispiro 5 अप्रैल 2020, 22:35

1 उत्तर

सबसे बढ़िया उत्तर

जिस तरह से मैंने किया वह ऐसा था:

if (!MSBuildLocator.IsRegistered) MSBuildLocator.RegisterDefaults();
using (var w = MSBuildWorkspace.Create())
    {
        var sln = await w.OpenSolutionAsync(solutionPath);
    }

मेरा मानना ​​है कि MSBuildLocator.RegisterDefaults() यहां गायब टुकड़ा है। यह आपके वीएस संस्करण के लिए सही एमएसबिल्ड पथ सुनिश्चित करता है। हो सकता है कि आपका पर्यावरण पथ सही था, लेकिन फिर आपने वीएस का एक और उदाहरण स्थापित किया और यह किसी भी तरह भ्रमित हो गया

4
timur 17 अप्रैल 2020, 14:48