2016-01-21 15 views
1

我有一個C#項目,命名爲「X」, 我修改了X.csproj文件,並改變以<OutputType>Library</OutputType><OutputType>Module</OutputType> 這意味着我現在輸出.netmodule文件,而不是.dll文件,這是很酷,我可以使用netmodules作爲C++/CLI項目的輸入。Visual Studio 2015 UP1總是重建我的C#netmodule輸出項目。它可以修復嗎?

但是,Visual Studio將堅持對每一個建設重新編譯項目, 當我打開生成的輸出內容的詳細程度,以「診斷」,我看這樣行輸出:

項目「X」是不是最新。缺少輸出文件 'C:... \ X \ bin \ Debug \ X.exe'。

這個問題當然是編譯器輸出X.netmodule而不是X.exe,所以X.exe永遠不會被找到,因此我的項目在每個版本上都會重新編譯。 更糟糕的是,如果我從csproj上的命令行運行msbuild,則會發生正確的行爲,即只在項目中的文件發生更改時纔會重新生成。

這導致我相信VS2015 [或其他人]錯誤地計算最終輸出名稱,因爲我已經指定模塊爲<OutputType>,並且它是VS2015強制重新構建,而不是Msbuild。

我知道修改.csproj的<OutputType>是非標準的,不支持,但似乎這種方法正在被其他人使用一些,這似乎是一個已知的問題,可能與工作-周圍。

在此先感謝。

回答

1

好的,我很樂意聽到其他人對此有所瞭解,但我想出了一個解決方法。 我只是將一個複製命令添加到屬性>構建事件>後構建事件命令行。

複製$(TARGETDIR)$(的TargetName).netmodule $(TARGETDIR)$(的TargetName).EXE

這意味着當VS尋找exe文件,(而不是.netmodule) ,它會找到它,並且它和.net模塊的日期相同,所以VS的邏輯關於是否重新構建應該被糾正。

相關問題