根据程序集的加载方式,以下代码可能会抛出异常“无法加载文件或程序集System.Core 2.0.5.0”
public function actionDelete() {
if (isset($_POST['id'])) {
$id = $_POST['id'];
$model = \app\models\UserPreferences::find()->where(['user_id' => Yii::$app->user->identity->user_id])->one();
$blockvalues = json_decode($model->others);
foreach ($blockvalues->dashboard_layout as $key => $value) {
if ($value == $id) {
unset($blockvalues->dashboard_layout[$key]);
//save the new updated dashbooard_layouts values
$model->others=json_encode($blockvalues);
$model->save();
echo \yii\helpers\Json::encode([
'status' => true,
]);
}
}
} else {
echo \yii\helpers\Json::encode([
'status' => false,
'id'=>$id
]);
}
}
Load或LoadFile导致异常
foreach (var type in valueTupleAssembly.GetTypes())
{
var attributes = type.GetCustomAttributes(typeof(string), false);
}
LoadFrom工作正常
var valueTupleAssembly = Assembly.LoadFile(path);
var valueTupleAssembly = Assembly.Load(File.ReadAllBytes(path));
我知道System.ValueTuple是可重定向的,它对System.Core的依赖应解析为正在执行的任何内容。
我不明白(1)为什么反映TupleExtensions触发System.Core 2.0.5的组装解析(同一组件中的其他类型没有)和(2)为什么LoadFrom没有相同的问题。
https://blogs.msdn.microsoft.com/suzcook/2003/09/19/loadfile-vs-loadfrom/状态“LoadFrom()经过Fusion,可以重定向到另一个不同路径的程序集,但如果已经在LoadFrom上下文中加载了相同的身份。”所以我对(2)的猜测是Fusion将system.core 2.0.5重定向到可用的版本?