![](/img/trans.png)
[英]File (or assembly) can't be found after changing project's .NET target-framework from 4.0 to 3.5
[英]How can I progrommatically change the target framework from 4.0 to 3.5 of a project/solution?
編輯3:經過更多的谷歌搜索后,.NET 3.5應用程序中似乎無法擁有TargetFrameworkMoniker屬性。 所以我想我應該問一個不同的問題。
如何將目標框架從4.0更改為3.5? 不幸的是,我只能找到其他方法的東西。 還是更好,但是我如何以編程方式將項目的目標框架版本設置為4.0以外的版本?
原始問題:我剛剛切換到vs2010。 我有一個使用.net 3.5的應用程序。 它加載由其他應用程序生成的插件。 插件使用的是.net 4,因此無法加載。 我正在使用EnvDTE.Project創建一個項目並設置設置。 我找不到為此需要設置的設置。
編輯1:我正在為大約50個解決方案生成代碼。 當我從vs2005切換到vs2010時,這些解決方案中的項目默認為.NET Framework 4.0。 因此,當我為這些解決方案生成代碼時,需要將.NET Framework設置為3.5。
編輯2:經過大量的搜尋后,我發現了這個 。 所以我嘗試了這個:
loProp = vsGetProperty("TargetFrameworkMoniker");
vsSetValue(loProp, ".NETFramework,Version=v3.5");
這兩種方法的定義如下。 據我所知,他們所做的與
project.Properties.Item("TargetFrameworkMoniker").Value = ".NETFramework,Version=v4.0,Profile=Client";
我稍后會在代碼中開始獲取“屬性不可用異常”。 當我刪除新行時,除項目目標框架仍為4.0之外,其他所有項目均正常工作。
代碼生成器的目標框架為3.5,因此我無法使用該鏈接中第二個示例所示的FrameworkName類。
這是vsGetProperty
protected Property vsGetProperty(string aProperty)
{
bool lbDone = false;
int liCount = 0;
Property loProp;
while (!lbDone && liCount < pMaxRetries)
{
try
{
loProp = pProject.Properties.Item(aProperty);
lbDone = true;
return loProp;
}
catch (System.Runtime.InteropServices.COMException loE)
{
liCount++;
if ((uint)loE.ErrorCode == 0x80010001)
{
// RPC_E_CALL_REJECTED - sleep half sec then try again
System.Threading.Thread.Sleep(pDelayBetweenRetry);
}
}
}
return null;
}
和vsSetValue
protected void vsSetValue(Property aProperty, string aValue)
{
bool lbDone = false;
int liCount = 0;
while (!lbDone && liCount < pMaxRetries)
{
try
{
aProperty.Value = aValue;
lbDone = true;
}
catch (System.Runtime.InteropServices.COMException loE)
{
liCount++;
if ((uint)loE.ErrorCode == 0x80010001)
{
// RPC_E_CALL_REJECTED - sleep half sec then try again
System.Threading.Thread.Sleep(pDelayBetweenRetry);
}
}
}
}
我認為您可能會為您的問題/解決方案投入過多的精力和思想。 也許有所不同,因為您的項目中有多少代碼。 只要他們不使用4.0功能,我就看不到為什么您無法打開項目屬性(在解決方案資源管理器中右鍵單擊項目名稱,選擇屬性)並在應用程序選項卡中更改目標框架。
切換時應顯示警告。 當我從4.0客戶端配置文件更改為4.0時,這就是我發生的事情。 我將確保您已簽入所有代碼,然后嘗試使用此方法。 如果失敗和/或中斷,請不要提交轉換並替換為最新的轉換。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.