체크아웃 후 "클래스, 구조체 또는 인터페이스에 잘못된 토큰 ','이 있습니다."

StackOverflow https://stackoverflow.com/questions/1073170

  •  21-08-2019
  •  | 
  •  

문제

Subversion에서 확인한 후 EPiServer 웹 응용 프로그램을 컴파일하는 데 문제가 있습니다.

이 오류가 발생합니다.

컴파일러 오류 메시지:CS1519:클래스, 구조체 또는 인터페이스 멤버 선언에 잘못된 토큰 ','이 있습니다.

소스 오류:

Line 116:    }
Line 117:    
Line 118:    public virtual EPiServer.Personalization.SubscriptionInfo, EPiServerSubscription Info {
Line 119:        get {
Line 120:            return ((EPiServer.Personalization.SubscriptionInfo, EPiServer)this.GetPropertyValue("SubscriptionInfo")));

소스 파일:

c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\956e6fc5\66c11597\App_Code.9_fan95p.0.cs    Line: 118 

오류에서 볼 수 있듯이 이 파일은 "Temporary ASP.NET Files" 폴더에 있으며 빌드 프로세스의 일부입니다.이것은 내 소스 코드가 아닙니다.

나는 보았다 이 질문 이는 웹 구성에 유형 참조가 포함되어 있음을 나타냅니다.

"Namespace.ClassName, AssemblyName" 형식입니다.

그래서 web.config에 가서 섹션을 변경했습니다.

...
<profile ...>
    <properties>
        ...
        <add name="SubscriptionInfo"
             type="EPiServer.Personalization.SubscriptionInfo, EPiServer"
             provider="SqlProfile" />
        ...

에게

...
<profile ...>
    <properties>
        ...
        <add name="SubscriptionInfo" 
             type="EPiServer.Personalization.SubscriptionInfo"
             provider="SqlProfile" />
        ...

이로 인해 위의 즉각적인 오류가 제거되었지만 다른 유형에 대해 동일한 오류가 발생했습니다.그래서 나는 "에 있는 모든 유형을 살펴보았습니다.네임스페이스.유형 이름, 어셈블리 이름" 형식을 지정하고 "를 제거했습니다., 어셈블리 이름".이로 인해 모든 CS1519 오류가 중지되었지만 CS0234가 발생하기 시작했습니다.

컴파일러 오류 메시지:CS0234:이 형식 또는 네임스페이스 이름 '개인화'가 존재하지 않습니다. 네임스페이스 'EPiServer'( 어셈블리 참조가 누락 되었습니까?)

소스 오류:
116행:}
117행:
118행:공개 가상 EPiServer.Personalization.SubscriptionInfo 구독정보 {
119행:얻다 {
120행:돌아오다 ((EPiServer.Personalization.SubscriptionInfo)(this. GetPropertyValue("구독 정보")));

저는 VisualStudio 2008, Episerver 5.2.372.7, VisualSVN 1.7.2 및 Debian 상자를 svn 버전 1.4.2(r22196)를 실행하는 Subversion 저장소로 사용하고 있습니다.

애플리케이션이 제대로 구축된 후 저장소에 체크인했습니다.동일한 컴퓨터의 다른 위치로 체크아웃하고 F5를 누르면 이러한 오류가 나타나기 시작합니다.

누구든지 어떤 제안이 있습니까?

업데이트:devio님, Zhaph님의 답변에 감사드립니다.

내 web.config에 다음을 추가했습니다. <compilation> 부분:

<assemblies>
  <add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  <add assembly="EPiServer, Version=5.2.375.7, Culture=neutral, PublicKeyToken=8fe83dea738b45b7"/>
  <add assembly="EPiServer.BaseLibrary, Version=5.2.375.7, Culture=neutral, PublicKeyToken=8fe83dea738b45b7"/>
  <add assembly="EPiServer.Configuration, Version=5.2.375.7, Culture=neutral, PublicKeyToken=8fe83dea738b45b7"/>
  <add assembly="EPiServer.Enterprise, Version=5.2.375.7, Culture=neutral, PublicKeyToken=8fe83dea738b45b7"/>
  <add assembly="EPiServer.Implementation, Version=5.2.375.7, Culture=neutral, PublicKeyToken=8fe83dea738b45b7"/>
  <add assembly="EPiServer.Lucene, Version=5.2.375.7, Culture=neutral, PublicKeyToken=8fe83dea738b45b7"/>
  <add assembly="EPiServer.Scheduler, Version=5.2.375.7, Culture=neutral, PublicKeyToken=8fe83dea738b45b7"/>
  <add assembly="EPiServer.Web.WebControls, Version=5.2.375.7, Culture=neutral, PublicKeyToken=8fe83dea738b45b7"/>
  <add assembly="EPiServer.WorkflowFoundation, Version=5.2.375.7, Culture=neutral, PublicKeyToken=8fe83dea738b45b7"/>
  <add assembly="EPiServer.Wsrp, Version=5.2.375.7, Culture=neutral, PublicKeyToken=8fe83dea738b45b7"/>
  <add assembly="EPiServer.XForms, Version=5.2.375.7, Culture=neutral, PublicKeyToken=8fe83dea738b45b7"/>
</assemblies>

없었다 <assemblies> 이전에 섹션.

프로젝트의 참조에는 해당 DLL이 모두 있습니다.모든 EPiServer DLL은 GAC에 있습니다.새로운(작동하지 않는) 체크아웃은 원래 프로젝트가 생성된 동일한 컴퓨터에 있습니다.

나는 이제 다음을 얻습니다.

파서 오류 메시지:로드할 수 없습니다. 파일 또는 어셈블리 'EPiServer.Scheduler' 또는 해당 종속성 중 하나입니다.시스템 지정된 파일을 찾을 수 없습니다.

(C:\Projects\web\ProvidentPPC2\ProvidentPPC\web.config 라인 301)

소스 오류:

Line 299:      <add name="InitializationModule" type="EPiServer.Web.InitializationModule" />
Line 300:      <!--<add name="BasicAuthentication" type="EPiServer.Security.BasicAuthentication, EPiServer" />--> 
Line 301:      <add name="Initializer" type="EPiServer.Scheduler.Initializer, EPiServer.Scheduler" />
Line 302:      <add name="WorkflowRuntime" type="EPiServer.WorkflowFoundation.WorkflowSystem" />
Line 303:      <add name="UrlRewriteModule" type="EPiServer.Web.UrlRewriteModule" />  

소스 파일:

C:\Projects\web\ProvidentPPC2\ProvidentPPC\web.config
Line: 301

내가 말했듯이 EPiServer.Scheduler는 내 GAC에 있으며 참조로 프로젝트에 추가되었습니다.더 많은 아이디어를 주시면 감사하겠습니다.

도움이 되었습니까?

해결책

프로젝트에서 DLL 참조를 재구성 하면서이 문제를 겪었습니다.

외부/세 번째 부분 DLL을 빈 폴더에서 웹 프로젝트 루트 외부의 라이브러리 폴더로 옮겼습니다.

내 문제는 DLL 참조 중 일부가 사본 로컬 세트가 True로 설정되어 있지 않으므로 빌드시 Bin 폴더에 복사되지 않았다는 것입니다.

다른 팁

내가 이것을 물었을 때 이후로 오랜 시간이 지났고 나는 문제가 무엇인지 기억하고 답을 게시해야한다고 계속 생각하고 있습니다. 나는 이것이 것이라고 생각한다.

에피소버가 설치 한 DLL을 찾는 응용 프로그램에 문제가 있음이 밝혀졌습니다. 나는 정확히 확실하지 않고 깨끗한 기계에서 그것을 시험해 볼 기회가 생기면이 게시물을 업데이트 할 것입니다. 나는 여전히 중간 프로젝트를 통해 멍청이에 좋은 시간이 아닙니다.

내가 고치는 방식은 c : program files epperver cms version bin에서 dlls를 가져 와서 응용 프로그램의 빈 폴더에 넣는 것이 었습니다.

어딘가에 깨끗한 설치를 할 기회가 생기면 프로젝트가 사실인지 (의심의 여지가 있음) 또는 내 컴퓨터의 설치가 깨진 것 같습니다.

에피소버 어셈블리를 올바르게 참조 해 보셨습니까?

솔루션 탐색기의 프로젝트 참조 노드에 OK가 표시되고 있다고 가정하고 노란색 외식 오버레이가 없었습니까?

아마도 web.config 컴파일 섹션에서도 참조 할 수 있습니다.

<compilation debug="false">
  <assemblies>
    [...]
    <add assembly="Episerver, Version=5.2.372.7"/>
  </assemblies>
</compilation>

버전 번호가 필요하지 않거나 버전 번호와 문화 유형을 추가해야 할 수도 있습니다. 이미 참조를 위해 참조 된 다른 어셈블리가 몇 개 있어야합니다.

당신은 또한 시도 할 수 있습니다 :

<add assembly="EPiServer" />

그리고 다른 변형.


어셈블리로드 문제처럼 들립니다.

에피소어 DLL이 새 위치에서 액세스 할 수 있는지 확인하십시오. 컴퓨터 글로벌 어셈블리 캐시에 설치되어 있습니까? 아니면 /빈 폴더에 대한 로컬 참조입니까? BIN 폴더에 DLL이 있습니까? DLL이 소스 컨트롤에 포함되어 있습니까?

나는 이것을 여러 번 달려 가서 나를 위해 그것을 해냈다. 에피소어 어셈블리를 BIN 폴더에 수동으로 복사했을 때입니다. 그것은 확실히 작동하지만 그다지 우아하지는 않습니다. 어셈블리 태그가있는 Zhaph의 솔루션은 훨씬 더 멋져 보입니다. 다음에 시도해 볼게요.

오늘 오후에도 비슷한 문제가 발생했습니다.문제는 EpiServer dll이 웹사이트의 bin 디렉토리에 없어서 바인드 실패가 발생했다는 것입니다.

이 프로젝트는 동료 중 한 명이 생성했으며 관련 EpiServer dll이 lib 폴더에 솔루션 항목으로 추가되어 거기에서 참조되었습니다.그러나 처음에는 EpiServer 프로젝트 템플릿에서 생성했기 때문에 라이브러리도 자동으로 bin 폴더에 추가되었습니다.lib 폴더를 가리키도록 참조를 업데이트했을 때 로컬 복사의 기본값은 false였습니다.템플릿에 의해 bin 폴더에 원본 복사본이 저장되었기 때문에 이 작업은 그의 컴퓨터에서는 여전히 작동했습니다.CopyLocal = True로 업데이트하면 문제가 해결되었습니다.

에피소버 사이트와 함께 다시 같은 문제가있었습니다. 에피소버 DLLS를 참조했기 때문에 모든 참조에서 "로컬 로의 사본"속성이 없었기 때문에 모든 참조에서 True로 설정되어 있지 않았으므로 모두 빈 디렉토리에 배치되지 않았습니다.

빈 폴더에서 모든 것을 삭제하고 [어셈블리]에서 BIN 폴더까지 모든 파일을 복사하면 문제가 해결되었습니다.

Khizer Jalal

원래 오류 메시지는 당신이 오르플 린 C# 표현식을 가지고 있음을 의미한다고 생각합니다.

return ((EPiServer.Personalization.SubscriptionInfo, EPiServer)...

구성 파일과 관련이 없습니다.

아마도 당신은 "대신"대신 ""를 입력했을 것입니다. ? (컴파일러가 이것을 읽으면 캐스트에서 2 가지 유형을 제공합니다)

Web.config를 원래 버전으로 되돌리고 오타를 수정하십시오.

Greg의 의견 후 업데이트 :

게시 한 구성 섹션이 에피소버 구성의 일부라는 것을 알지 못했습니다. 당신은 그때 어셈블리 이름을 제거해야했습니다.

그러나 웹 앱에서 에피소버를 참조해야한다고 생각합니다 (참조 추가 ...). 내 프로젝트에서도 이것을 발견했다고 생각합니다. ASP.NET 앱을 새로운 위치로 체크 아웃하면 모든 참조를 다시 추가해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top