Search code examples
facebook-unity-sdk

"IOException: Sharing violation on path" on building a Unity project on Mac OS X with Facebook Unity SDK 5.1


I get an "IOException: Sharing violation on path" after importing the Facebook Unity SDK.

The exception is thrown from FacebookPostprocess.cs:35, when the PostProcess tries to Save the modified Xcode project.


Solution

  • It seems the modified version of XCodeEditor, the Facebook SDK uses, doesn't close the StreamReader.

    You should change these lines in Assets\Facebook\Editor\iOS\third_party\XCodeEditor-for-Unity\XCProject.cs from:

    projectFileInfo = new FileInfo( Path.Combine( this.filePath, "project.pbxproj" ) );
    string contents = projectFileInfo.OpenText().ReadToEnd();
    

    to:

    projectFileInfo = new FileInfo( Path.Combine( this.filePath, "project.pbxproj" ) );
    StreamReader sr = projectFileInfo.OpenText();
    string contents = sr.ReadToEnd();
    sr.Close();
    

    The modification is from the original XCodeEditor (https://github.com/dcariola/XCodeEditor-for-Unity).