我通常对我的程序集进行强命名,因为我不想以后发现我的程序集需要一个强名称,以防该程序集以我最初预期的其他方式使用。
我也遇到了一些与 Sharepoint 中的事件相关的问题,其中反射用于执行基于类和程序集信息(可能存储在数据库中)的函数,所以如果你稍后添加一个强名称,那么你必须更新使用了旧事件(例如在列表中),否则您的函数将不会受到影响。另一方面,如果您有一个强名称,那么使用web.config 程序集重定向很容易
我喜欢您将程序集放在 bin 中的想法,这样您就可以使用为管理员提供更多控制的 CAS。
要解决此问题,您可以首先添加强名称并将程序集部署到 GAC,然后将 .webpart(或 .dwp)添加到 Web 部件库。如果可行,您可以尝试将程序集移动到 bin 文件夹,然后删除强名称。
您可能会考虑在功能中部署 webpart 并添加必要的代码以将 .webpart 文件动态添加到库中,这样您就不必担心文件,这可以通过使用功能接收器的代码来完成
using (SPWeb web = site.OpenWeb())
{
web.AllowUnsafeUpdates = true;
site.AllowUnsafeUpdates = true;
SPList list = web.Lists["Web Part Gallery"];
SPFolder root = list.RootFolder;
SPFile spFile = root.Files.Add("ContentEditor.dwp", s);
spFile.Update();
}
或使用 caml xml
<?xml version="1.0" encoding="utf-8"?>
<Feature Id="8425EAF8-6GBE-4698-83C7-831CA8614D6D"
Title="WebPart"
Description="Some description"
ImageUrl="GenericFeature.gif"
Scope="Site"
xmlns="http://schemas.microsoft.com/sharepoint/">
<ElementManifests>
<ElementManifest Location="elements.xml" />
</ElementManifests>
</Feature>
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Module
Name="WebPart"
List="113"
Url="_catalogs/wp"
RootWebOnly="TRUE">
<File Url="WebPart.dwp" Type="GhostableInLibrary" />
</Module>
</Elements>