none
Visual Studio 2017에서 사용자별 프로젝트 옵션 파일 이슈??

    질문

  • Team Foundation Server를 이용하여 소스 관리를 하고 있습니다.

    (TFS에는 사용자별 프로젝트 옵션 파일은 올리지 않았습니다.)

    그리고 서버에서 소스를 다운로드 받았습니다.

    WebApplicationTest.csproj 파일을 VS2017로 열면 아래와 같이 WebApplicationTest.csproj.user 파일이 생성됩니다.

    프로젝트 속성의 웹 탭에서 로컬 IIS로 변경하고 가상 디렉터리 만들기 버튼을 이용하여 로컬 IIS에 사이트를 올렸습니다.

    이 시점에서 '서버 설정을 모든 사용자에게 적용 (프로젝트 파일에 저장)'을 체크 했기 때문에 프로젝트 파일에 관련 정보들이 저장되어집니다.

    이 상황에서 솔루션을 닫고 WebApplicationTest.csproj.user 파일을 삭제합니다.

    그리고 다시 프로젝트를 열면 WebApplicationTest.csproj.user 파일이

    다시 생성되고 아래 그림과 같이 IIS Express를 사용하도록 되어있습니다.

    위의 시나리오대로면 사용자 프로젝트 옵션 파일이 존재 하지 않을 경우 강제로 생성이 되고

    프로젝트 파일의 서버 설정보다 사용자 프로젝트 옵션 파일의 설정이 우선순위를 갖는다는 말인데..

    그렇다면 TFS에도 사용자 프로젝트 옵션 파일을 같이 올려줘야 하는건가요?? (TFS에 같이 올리면 개인설정파일의 의미가 없어지지 않나요??)

    프로젝트 파일에 저장되어 있는 서버 설정 정보를 읽는 방법이 있으면 도움을 요청합니다.


    • 편집됨 아찌 2018년 4월 11일 수요일 오전 8:39
    2018년 4월 11일 수요일 오전 7:30

모든 응답

  • 아래 내용이 참고가 되지 않을까 합니다.

    https://docs.microsoft.com/ko-kr/previous-versions/visualstudio/visual-studio-2008/ms171339(v=vs.90)

    소스 제어의 파일 처리

    Visual Studio 소스 제어에 추가할 수 있는 파일은 다음과 같습니다.

    • 솔루션 파일(*.sln)

    • 프로젝트 파일(예: *.csproj, *.vbproj 파일)

    • Visual Studio 프로젝트의 런타임 동작을 제어하는 데 사용되는 XML 기반의 응용 프로그램 구성 파일

    소스 제어에 추가할 수 없는 파일은 다음과 같습니다.

    • 솔루션 사용자 옵션 파일(*.suo)

    • 프로젝트 사용자 옵션 파일(예: *.csproj.user, *.vbproj.user 파일)

    • 웹 프로젝트의 가상 루트 위치를 제어하는 웹 정보 파일(예: *.csproj.webinfo, *.vbproj.webinfo)

    • 빌드 출력 파일(예: *.dll 및 *.exe 파일)

    결론적으로, 올리지 않는 것을 권장합니다. 코드는 서버에서 내려 받고 user 파일은 로컬에서 관리하시면 될 것 같습니다만 따로 이슈가 있으신지요?

    2018년 4월 11일 수요일 오전 8:51
  • 프로젝트 파일에 있는 서버 설정값이 반영이 안됩니다.

    프로젝트 속성의 웹 탭에 있는 서버 설정을 IIS Express -> 로컬 IIS로 변경하고 저장 종료한 다음에..

    *.csproj.user 파일을 강제로 삭제 한 후 VS2017로 프로젝트 파일을 열면

    서버 설정이 다시 IIS Express로 변경됩니다.

    이때 현상을 보면 VS2017로 프로젝트 파일을 열때 *.csproj.user 파일이 존재하지 않아 다시 생성되고

    실제 서버의 설정값은 *.csproj 파일에 저장되어 있는 서버 설정값이 아닌

    *.csproj.user 파일에 저장되어 있는 설정값이 반영되고 있습니다.

    결론적으로 프로젝트 파일의 내용만 TFS에 올라가 있으니

    다른 사용자가 소스서버에서 소스코드를 내려 받았을때

    서버 설정이 *.csproj 파일에 있는 서버설정(로컬IIS)이 반영되는것이 아니라

    새로만들어진 *.csproj.user 파일에 있는 서버설정 (IIS Express )으로 반영됩니다.

    그럼으로 소스서버에서 소스코드를 새로 내려받은 다른 사용자들은

    서버설정을 다시 로컬IIS로 변경해줘야 합니다.

    제 생각으로는 *.csproj.user 파일이 존재하지 않을때 새로 생성되는 과정에서 *.csproj의 설정값을 읽어와

    저장되어져야 할 것 같은데..

    아무 내용없이 저장되어져 서버설정이 리셋되는 현상이 발생합니다.

    *.csproj.user 파일이 존재 하지 않을떄 *.csproj 파일의 서버설정값을 적용하고 싶은데..

    해결 방법이 있을까요??



    • 편집됨 아찌 2018년 4월 12일 목요일 오전 6:26
    2018년 4월 12일 목요일 오전 6:24
  • .csproj.user 파일을 매번 삭제해야 하는 이유가 있을까요?

    서버에 코드를 올릴 때는 .csproj.user 이나 .suo 파일 등 제가 드렸던 자료에서 언급한 파일들을 제외한 나머지 파일들을 커밋하고, 나중에 내가 작업을 할 일 있을 때 서버로부터 변경사항에 대한 업데이트만 받아오면 되는데, 굳이 작업을 하실 때마다 .csproj.user 파일을 제거함으로써 이 파일을 재 생성하게 만들고 그에 따라 이슈를 만드는 부분이 이해가 되지 않습니다. 설명하신 대로라면, 반대로 저 파일을 굳이 삭제하지 않으면 문제가 없을 것 같다는 생각이 듭니다만...

    업데이트:

    도움이 될 지는 모르겠지만 다른 설명을 추가해봅니다.

    다운로드 받은 .csproj 파일 내에서 아래 엘리먼트 부분이 false가 아닌 true인지 확인해볼 필요도 있을 것 같습니다.

    <WebProjectProperties>
     <SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
    </WebProjectProperties>



    2018년 4월 12일 목요일 오전 8:40
  • 저 혼자 사용하는 코드라면 아무런 문제가 되지 않습니다.. 말씀하신대로 일부러 지울필요도 없구요...

    위에서 *.csproj.user 파일을 지운다는것은..

    다른 사용자가 소스 서버에 있는 코드를 내려받은 상황을 가정한것입니다.

    *.csproj.user 파일은 소스 서버에 존재 하지 않기 떄문에..

    다른 사용자가 최초로 소스 서버의 코드를 내려 받을 경우

    위의 상황처럼 *.csproj.user 파일을 강제로 지운것과 같은 상황이 됩니다.

    결국.. 소스서버에서 처음으로 소스를 내려받아 실행하는 다른 사용자는 웹서버 세팅을 다시 해줘야하는

    번거로운 상황이 발생됩니다. 이 상황의 해결방법을 문의 드린것입니다.

    이런 상황이라면 VS2017의 경우 *.csproj 파일에 있는 서버설정은 사용되지 않는것으로 판단되는데

    어떻게 하면 *.csproj 파일에 있는 서버설정을 사용할 수 있을까요??

    추가 :

    SaveServerSettingsInUserFile 엘리먼트를 True로 한다는 것은

    *.csproj.user 파일에 서버세팅을 저장한다는 뜻인데.. 

    소스서버에는 *.csproj.user파일을 올리지 않기 때문에 *.csproj 파일에 서버 설정 정보를 저장하기 위해

    Fasle로 사용하고 있습니다.


    • 편집됨 아찌 2018년 4월 13일 금요일 오전 12:18
    2018년 4월 13일 금요일 오전 12:12