C:\Program Files\Microsoft Visual Studio\2022\Professional\MSBuild\Current\Bin \amd64\Microsoft.Common.CurrentVersion.targets(5823,5): предупреждение MSB3061: невозможно удалить файл «C:\Users\Madhu\Documents\repos\MyCtrl\bin\Debug\MyCtrl.dll». Доступ к пути «C:\Users\Madhu\Documents\repos\MyCtrl\bin\Debug\MyCtrl.dll» запрещен.
Теперь я получаю это предупреждение даже при когда я открываю Visual Studio от имени администратора. Папки bin и нисходящие папки имеют доступ на запись/изменение как к учетной записи пользователя, так и к учетной записи администратора. Я использую Visual Studio Professional 2022 (64-разрядная версия) версии 17.11.5 на компьютере с Windows 10. Я понимаю, что это предупреждение, но, поскольку dll будет распределена по нескольким серверам, я хотел бы понять причину предупреждения и есть ли способ смягчить его, не подавляя его. Благодарим вас за уделенное время и дальнейшие советы.
.NET
web
Попробовал запустить Visual Studio в режиме администратора, и пользователь с правами администратора имеет права на запись/изменение в корзине и дочерних папках.
Код: Выделить всё
This is what I'm calling for Register() [ComRegisterFunction()]
public static void Register(Type t) {
try {
if (OperatingSystem.IsWindows()) {
ActiveXCtrlHelper.RegasmRegisterControl(t);
}
}
catch (Exception ex) {
throw;
}
}
// Definition of RegasmRegisterControl()
public static void RegasmRegisterControl(Type t)
{
// Check the argument
GuardNullType(t, "t");
GuardTypeIsControl(t);
// Open the CLSID key of the control
using (RegistryKey keyCLSID = Registry.ClassesRoot.OpenSubKey(
@"CLSID\" + t.GUID.ToString("B"), true))
{
RegistryKey subkey = null;
subkey = keyCLSID.OpenSubKey("InprocServer32", true);
if (subkey != null)
{
try
{
string strAssemblyPath = IsNetCore() ? GetLatestNetCoreRuntimePath() + @"\coreclr.dll" : Environment.SystemDirectory + @"\mscoree.dll";
if (System.IO.File.Exists(strAssemblyPath))
{
subkey.SetValue(null, strAssemblyPath);
}
}
catch (Exception) {}
}
using (subkey = keyCLSID.CreateSubKey("Control")) {; };
using (subkey = keyCLSID.CreateSubKey("MiscStatus"))
{
int nMiscStatus = OLEMISC_RECOMPOSEONRESIZE +
OLEMISC_CANTLINKINSIDE + OLEMISC_INSIDEOUT +
OLEMISC_ACTIVATEWHENVISIBLE + OLEMISC_SETCLIENTSITEFIRST;
subkey.SetValue("", nMiscStatus.ToString(), RegistryValueKind.String);
}
using (subkey = keyCLSID.CreateSubKey("ToolBoxBitmap32"))
{
subkey.SetValue("", Assembly.GetExecutingAssembly().Location + ", 101",
RegistryValueKind.String);
}
using (subkey = keyCLSID.CreateSubKey("TypeLib"))
{
Guid libId = AssemblyExtenstions.GetTypeLibGuidForAssembly(t.Assembly);
subkey.SetValue("", libId.ToString("B"), RegistryValueKind.String);
}
using (subkey = keyCLSID.CreateSubKey("Version"))
{
int nMajor, nMinor;
AssemblyExtenstions.GetTypeLibVersionForAssembly(t.Assembly, out nMajor, out nMinor);
subkey.SetValue("", String.Format("{0}.{1}", nMajor, nMinor));
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... 61-warning