7

Subversion からチェックアウトした後、EPiServer Web アプリケーションのコンパイルに問題があります。

このエラーが発生します

コンパイラ エラー メッセージ: 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" フォルダーにあり、ビルド プロセスの一部です。これは私のソースコードではありません。

Web構成に型参照が含まれていることを示唆するこの質問を見ました

「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" />
        ...

これにより、上記の即時エラーが削除されましたが、別のタイプで同じエラーが発生しました。そこで、「 Namespace.TypeName, AssemblyName 」形式のすべての型を調べて、「 , AssemblyName」を削除しました。これにより、すべての CS1519 エラーが停止しましたが、CS0234 が発生し始めました。

コンパイラ エラー メッセージ: CS0234: タイプまたは名前空間名 'Personalization' が名前空間 'EPiServer' に存在しません (アセンブリ参照がありませんか?)

ソース エラー:
116 行目: }
117 行目:
118 行目: public virtual EPiServer.Personalization.SubscriptionInfo SubscriptionInfo {
119 行目: get {
120 行目: return ((EPiServer.Personalization.SubscriptionInfo)(this.GetPropertyValue("SubscriptionInfo"))) ;

VisualStudio 2008、Episerver 5.2.372.7、VisualSVN 1.7.2、および Debian ボックスを、svn バージョン 1.4.2 (r22196) を実行する Subversion リポジトリとして使用しています。

アプリケーションが正常にビルドされたので、レポにチェックインしました。同じコンピューターの別の場所にチェックアウトして F5 キーを押すと、これらのエラーが表示され始めます。

誰にも提案はありますか。

更新: ご返信ありがとうございます。devio、Zhaph。

<compilation>セクションの web.config に以下を追加しました。

<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' またはその依存関係の 1 つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。

(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 にあり、参照としてプロジェクトに追加されています。これ以上のアイデアは大歓迎です。

4

8 に答える 8

10

プロジェクトで dll 参照を再構築していたときに、この問題が発生しました。

外部/サード パーツの dll を bin フォルダーから Web プロジェクト ルートの外にあるライブラリ フォルダーに移動しました。

私の問題は、一部の dll 参照で copy local が true に設定されていなかったため、ビルド時に bin フォルダーにコピーされなかったことです。

于 2010-10-11T13:02:14.877 に答える
2

これを尋ねてからしばらく経ちましたが、問題が何であったかを思い出して回答を投稿する必要があると考え続けています。これだと思います。

EPiServer がインストールした DLL を見つけるアプリケーションに問題があることが判明しました。正確にはわかりませんが、クリーンなマシンで試してみる機会があれば、この投稿を更新します。

私が修正した方法は、c:\Program Files\EPiServer\CMS\VERSION\bin から DLL を取得し、アプリケーションの bin フォルダーに配置することでした。

どこかでクリーン インストールを行う機会があれば、それが実際にプロジェクトに影響しているのか (疑わしい)、それとも私のコンピューターへのインストールが壊れている可能性が高いかどうかを確認します。

于 2009-08-25T22:06:10.410 に答える
1

EPiServerアセンブリを正しく参照しようとしましたか?

ソリューションエクスプローラーのプロジェクト参照ノードに[OK]と表示されていて、黄色の叫び声オーバーレイが表示されていないと思いますか?

おそらく、web.configコンパイルセクションでも参照できます。

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

バージョン番号が不要な場合もあれば、バージョン番号とカルチャタイプを追加する必要がある場合もあります。参照用にすでに参照されている他のアセンブリがいくつかあるはずです。

また、試すことができます:

<add assembly="EPiServer" />

およびその他のバリエーション。


アセンブリロードの問題のように聞こえます:

EPiServer DLLが新しい場所でアクセス可能であることを確認します-コンピューターのグローバルアセンブリキャッシュにインストールされていますか、それとも/ binフォルダーへのローカル参照ですか?dllはbinフォルダーにありますか?dllはソース管理に含まれていますか?

于 2009-07-02T09:10:46.920 に答える
1

私はこれに何度か遭遇し、手動で EPiServer アセンブリを bin フォルダーにコピーしたときに実行しました。それは確かに機能しますが、あまりエレガントではありません。アセンブリ タグを使用した Zhaph のソリューションは、はるかに優れているように見えます。次回試してみます。

于 2009-08-14T10:20:54.247 に答える
1

BINフォルダーからすべてを削除し、[ASSEMBLIES]からすべてのファイルをBINフォルダーにコピーすると、問題が解決しました。

キゼル・ジャラル

于 2014-01-22T07:58:14.683 に答える
1

今日の午後、同様の問題が発生しました。問題は、EpiServer dll が Web サイトの bin ディレクトリに存在しないことでした。そのため、バインド エラーが発生しました。

このプロジェクトは同僚の 1 人によって作成され、関連する EpiServer dll がソリューション アイテムとして lib フォルダーに追加され、そこから参照されました。ただし、最初に EpiServer プロジェクト テンプレートから作成したため、ライブラリは bin フォルダーにも自動的に追加されていました。彼が lib フォルダーを指すように参照を更新したとき、ローカルのコピーはデフォルトで false に設定されました。テンプレートによって元のコピーが bin フォルダーに配置されているため、これは彼のマシンでも機能しました。それらを CopyLocal = True に更新すると、問題が修正されました。

于 2009-09-24T15:58:04.237 に答える
1

EPiServer サイトで、これと同じ問題が発生しました。これは、EPiServer DLL を参照していたためでしたが、すべての参照で「ローカルにコピー」プロパティが true に設定されていなかったため、すべてが bin ディレクトリに配置されていませんでした。

于 2009-09-25T15:02:28.303 に答える